为了账号安全,请及时绑定邮箱和手机立即绑定

Android:取消异步任务

Android:取消异步任务

一只名叫tom的猫 2019-08-02 16:24:37
Android:取消异步任务我使用异步任务上传图像并获得一些结果。在上传图像时,我看到一个进度对话框,用onPreExecute()方法编写,如下所示:    protected void onPreExecute() {           uploadingDialog = new ProgressDialog(MyActivity.this);           uploadingDialog.setMessage("uploading");           uploadingDialog.setCancelable(true);          uploadingDialog.show();     }好的,当我按下后退按钮时,显然对话框因setCancelable(true)而消失。但(显然)异步任务不会停止。那么我该如何解决这个问题呢?当我按下后退按钮时,我想取消对话和异步任务。有任何想法吗?
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

来自SDK:

取消任务

可以通过调用cancel(boolean)随时取消任务。调用此方法将导致后续调用isCancelled()返回true。

调用此方法后,将在doInBackground(Object [])返回后调用onCancelled(Object)而不是onPostExecute(Object)。

为确保尽快取消任务,应始终定期从doInBackground(Object [])检查isCancelled()的返回值,如果可能的话(例如在循环内)。

所以你的代码适合对话框监听器:

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}


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 593 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信