我使用异步任务上传图像并获得一些结果。

上传图像时,我看到一个进度对话框,用onPreExecute()方法编写,如下所示:

    protected void onPreExecute() {
         uploadingDialog = new ProgressDialog(MyActivity.this);
         uploadingDialog.setMessage("uploading");
         uploadingDialog.setCancelable(true);
         uploadingDialog.show();
    }

好的,当我按下后退按钮时,显然该对话框由于setCancelable(true)而消失了。

但是(显然)异步任务不会停止。

那么我该如何解决呢?当我按下“后退”按钮时,我想同时取消对话框和异步任务。有任何想法吗?

编辑:找到解决方案。请在下面查看我的答案。

最佳答案

从SDK:



因此,您的代码适合对话框监听器:

uploadingDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
    public void onCancel(DialogInterface dialog) {
        myTask.cancel(true);
        //finish();
    }
});

现在,正如我之前在SDK中提到的那样,您必须检查任务是否被取消,为此您必须在onPreExecute()方法中检查 isCancelled()

例如:
if (isCancelled())
    break;
else
{
   // do your work here
}

10-07 19:40