【发布时间】:2013-10-09 12:09:21
【问题描述】:
我目前有一个AsyncTask,其中有一个ProgressDialog。我将OnDismissListener 设置为setOnDismissListener,然后取消AsyncTask。问题是,无论我按下后退按钮还是屏幕中的任何位置,ProgressDialog(以及随后的AsyncTask)都会被忽略。
我想知道ProgressDialog是如何被解除的,然后如果按下后退按钮,我将取消AsyncTask,如果ProgressDialog之外的区域被按下,我只会最小化ProgressDialog,但AsyncTask 会继续。
如何检测OnDismissListener 的哪一组?还有其他方法可以完成我想做的事情吗?
谢谢
编辑(基于下面的 cmets):
这是我的代码。我在两个侦听器中都放置了一个断点,现在无论我如何取消对话框(后退按钮或对话框外),都会调用两个侦听器。
@Override
protected void onPreExecute() {
mProgressDialog = new ProgressDialog(mContext);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setCancelable(true);
mProgressDialog.show();
mProgressDialog.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
(SyncOperation.this).cancel(true);
}
});
mProgressDialog.setOnCancelListener(new ProgressDialog.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
(SyncOperation.this).cancel(true);
}
});
}
【问题讨论】:
-
有 2 个监听器,onDismiss 和 onCancel
-
描述不够,最好贴一些相关代码。
-
当上述任一操作完成时,两个监听器都会被调用。
标签: android android-asynctask progressdialog