Android 安卓进程对话框关闭。探源
我目前有一个Android 安卓进程对话框关闭。探源,android,android-asynctask,progressdialog,Android,Android Asynctask,Progressdialog,我目前有一个AsyncTask,其中有一个ProgressDialog。我通过setOnDismissListener设置OnDismissListener,然后取消AsyncTask。问题是,无论我按下后退按钮还是屏幕上的任何地方,ProgressDialog(以及随后的AsyncTask)都会被取消 我想知道ProgressDialog是如何被取消的,如果按下后退按钮,我将取消AsyncTask,如果按下ProgressDialog之外的区域,我将最小化ProgressDialog,但Asy
AsyncTask
,其中有一个ProgressDialog
。我通过setOnDismissListener
设置OnDismissListener
,然后取消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);
}
});
}
使用simplegestruedetector
detector = new SimpleGestureFilter(this,this);
我添加了一个私有变量:
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;
}
});
这是两个侦听器,onDismiss和oncancell描述不充分,最好也发布一些相关代码。在完成上述任一操作时都会调用这两个侦听器。这不是一种解决方法吗?无论我是按back还是在屏幕上,对话框都会被取消,我只想更改每次发生的事情。。。