Android 如何真正取消异步任务?

Android 如何真正取消异步任务?,android,android-asynctask,Android,Android Asynctask,下载文件时,我有progressDialog,它用于异步任务。在AsyncTask中,我实现了这些方法: @Override protected void onCancelled() { handleOnCancelled(this.result); super.onCancelled(); } @Override protected void onCancelled(String result) { super.onCancelled(result); } 在我的活动中

下载文件时,我有progressDialog,它用于异步任务。在AsyncTask中,我实现了这些方法:

@Override
protected void onCancelled() {
  handleOnCancelled(this.result);
  super.onCancelled();
}


@Override
protected void onCancelled(String result) {
    super.onCancelled(result);

}
在我的活动中,我正在声明mProgressDialog并将其命名为onCancelListener:

mProgressDialog.setOnCancelListener(new OnCancelListener() {

    @Override
    public void onCancel(DialogInterface dialog) {
       xml.cancel(true);


    }
});
当我按back键时,mProgressDialog关闭,onCancel(上面的方法)被调用,但异步任务仍然在后台运行。如何解决


谢谢

您需要反复检查
doInBackground()
方法中的布尔值
isCanceled()
。如果此方法返回true,则应立即退出任务正在执行的任何循环或后台工作


请参阅。

您需要在
doInBackground()
方法中重复检查布尔值
isCanceled()
。如果此方法返回true,则应立即退出任务正在执行的任何循环或后台工作


请参阅。

您需要在
doInBackground()
方法中重复检查布尔值
isCanceled()
。如果此方法返回true,则应立即退出任务正在执行的任何循环或后台工作


请参阅。

您需要在
doInBackground()
方法中重复检查布尔值
isCanceled()
。如果此方法返回true,则应立即退出任务正在执行的任何循环或后台工作

请参阅。

试试这个

if(myAsyncTask.getStatus().equals(AsyncTask.Status.RUNNING))
{    
      myAsyncTask.cancel(true);
}
试试这个

if(myAsyncTask.getStatus().equals(AsyncTask.Status.RUNNING))
{    
      myAsyncTask.cancel(true);
}
试试这个

if(myAsyncTask.getStatus().equals(AsyncTask.Status.RUNNING))
{    
      myAsyncTask.cancel(true);
}
试试这个

if(myAsyncTask.getStatus().equals(AsyncTask.Status.RUNNING))
{    
      myAsyncTask.cancel(true);
}
下载时检查异步任务中的
isCanceled()

下载时检查异步任务中的
isCanceled()

下载时检查异步任务中的
isCanceled()

检查
isCanceled()
下载时在异步任务中。

可能重复:可能重复:可能重复:可能重复: