Android ProgressDialog解雇。检测源

时间:2013-10-09 12:09:22

标签: android android-asynctask progressdialog

我目前有一个AsyncTask,其中包含ProgressDialog。我将OnDismissListener设置为setOnDismissListener,然后取消AsyncTask。问题是,无论是按后退按钮还是屏幕中的任何位置,ProgressDialog(以及随后的AsyncTask)都会被解雇。

我想知道ProgressDialog是如何被解雇的,然后如果按下后退按钮,我将取消AsyncTask,如果{{1}以外的区域按下,我会尽量减少ProgressDialog,但ProgressDialog会继续。

如何检测AsyncTask的哪一组?还有另一种方法可以完成我想要做的事情吗?

由于

编辑(根据以下评论):

这是我的代码。我在两个监听器中都放置了一个断点,现在关于如何取消对话框(后退按钮或对话框外),这两个监听器都被调用了。

OnDismissListener

2 个答案:

答案 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;
        }

    });