我目前有一个里面AsyncTask
有一个ProgressDialog
。我设置了OnDismissListener
by setOnDismissListener
,然后我取消了AsyncTask
。问题是,无论我按下后退按钮还是屏幕中的任何位置,ProgressDialog
(以及随后的)都会被解雇。AsyncTask
我想达到一个我知道如何ProgressDialog
被解雇的地步,然后如果按下后退按钮,我将取消AsyncTask
,如果ProgressDialog
按下之外的区域,我将最小化ProgressDialog
但AsyncTask
会继续。
我如何检测哪一组OnDismissListener
?还有另一种方法可以完成我想做的事情吗?
谢谢
编辑(基于下面的评论):
这是我的代码。我在两个侦听器中都放置了一个断点,现在无论我如何取消对话框(后退按钮或对话框外),都会调用两个侦听器。
@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);
}
});
}