取消progressdialog和asynctask

时间:2014-04-15 14:16:13

标签: android android-asynctask progressdialog cancellation

我正在运行asynctask时显示可取消的进度对话框。当我按下后退按钮时,我希望对话框都消失,同时也要取消正在运行的异步任务。 问题是:asynctask不知道对话框实例,所以在取消asynctask后我无法取消对话框。

目前只有在我按两次后退按钮后它才被取消。

2 个答案:

答案 0 :(得分:1)

对话框有一个onDismissed callback,用它来杀死异步任务。

答案 1 :(得分:1)

您可以在取消时使用ProgressDialog回调:

this.dialog = new ProgressDialog(context);
this.dialog.setMessage("Loading...");
this.dialog.setCancelable(true);
this.dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
    @Override
    public void onCancel(DialogInterface dialog)
    {
        // cancel AsyncTask
        cancel(false);
    }
});