当用户按返回按钮时取消异步
-
28-09-2019 - |
题
我有一个异步函
final class UploadTask extends AsyncTask {
ProgressDialog dialog = new ProgressDialog(...);
protected onPreExecute() {
dialog.show();
}
protected onPostExecute() {
dialog.hide();
}
};
对话框是可以取消的,并且当我在执行异步执行过程中按“取消”按钮时确实消失了。
发生这种情况时,我也想运行一些代码以取消异步函数(现在,甚至以为他的进度驱动器消失了,异步措施不断运行并最终完成)。我尝试从ProgressDialog中得出自己的课程,然后做
setOnDismissListener(new OnDismissListener() {
@Override public void onDismiss(DialogInterface d) {
/* do something */
}
};
(或与Oncancellistener类似的东西),但这根本不会被调用。
有任何想法吗?我只需要某种机制,即可在progressDialog显示时取消运行的异步。
解决方案
我没有测试过,但是尝试这样的事情:
final class UploadTask extends AsyncTask implements OnDismissListener{
ProgressDialog dialog = new ProgressDialog(...);
protected onPreExecute() {
dialog.setOnDismissListener(this);
dialog.show();
}
protected onPostExecute() {
dialog.hide();
}
@Override
public void onDismiss(DialogInterface dialog) {
this.cancel(true);
}
};
其他提示
我认为您正在寻找:oncancelled()
http://developer.android.com/reference/android/os/asynctask.html
不隶属于 StackOverflow