我目前有一个AsyncTask
,其中包含ProgressDialog
。我将OnDismissListener
设置为setOnDismissListener
,然后取消AsyncTask
。问题是,无论是按后退按钮还是屏幕中的任何位置,ProgressDialog
(以及随后的AsyncTask
)都会被解雇。
我想知道ProgressDialog
是如何被解雇的,然后如果按下后退按钮,我将取消AsyncTask
,如果{{1}以外的区域按下,我会尽量减少ProgressDialog
,但ProgressDialog
会继续。
如何检测AsyncTask
的哪一组?还有另一种方法可以完成我想要做的事情吗?
由于
编辑(根据以下评论):
这是我的代码。我在两个监听器中都放置了一个断点,现在关于如何取消对话框(后退按钮或对话框外),这两个监听器都被调用了。
OnDismissListener
答案 0 :(得分:0)
使用SimpleGestureDetector
detector = new SimpleGestureFilter(this,this);
答案 1 :(得分:0)
我添加了一个私有变量:
private boolean mBackPressed;
然后我按如下方式向听众实施:
mProgressDialog.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
(SyncOperation.this).cancel(true);
if(mBackPressed) {
Toast.makeText(mContext, "Cancel", Toast.LENGTH_SHORT).show();
mBackPressed = false;
} else {
Toast.makeText(mContext, "Minimize", Toast.LENGTH_SHORT).show();
}
}
});
mProgressDialog.setOnKeyListener(new ProgressDialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
mBackPressed = true;
}
return false;
}
});