我有一个 AsyncTask,在其中我在 onPreExecute 中显示一个 ProgressDialog,然后在 onPostExecute 中再次隐藏它,类似于
final class UploadTask extends AsyncTask {
ProgressDialog dialog = new ProgressDialog(...);
protected onPreExecute() {
dialog.show();
}
protected onPostExecute() {
dialog.hide();
}
};
当我在执行 AsyncTask 期间按下取消按钮时,该对话框是可取消的,并且确实消失了。
发生这种情况时,我也想运行一些代码来取消 AsyncTask(现在,即使他的 ProgressDialog 消失了,AsyncTask 也会继续运行并最终完成)。我尝试从 ProgressDialog 派生我自己的类,然后做
setOnDismissListener(new OnDismissListener() {
@Override public void onDismiss(DialogInterface d) {
/* do something */
}
};
(或与 OnCancelListener 类似的东西),但这根本不会被调用。
有任何想法吗?我只需要一些机制让用户在显示 ProgressDialog 时取消正在运行的 AsyncTask。