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还是在屏幕上,对话框都会被取消,我只想更改每次发生的事情。。。