我有progressDialog,用于我的AsyncTask,同时下载文件。在AsyncTask中,我实现了theese方法:
@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);
}
});
当我按后退键时,mProgressDialog被关闭,onCancel(上面的方法)被调用,但Async Task仍然在后台运行。怎么解决?
由于
答案 0 :(得分:3)
您需要在isCanceled()
方法中重复检查布尔值doInBackground()
。如果此方法返回true,则应立即退出该任务正在执行的任何循环或后台工作。
请参阅docs。
答案 1 :(得分:0)
试试这个
if(myAsyncTask.getStatus().equals(AsyncTask.Status.RUNNING))
{
myAsyncTask.cancel(true);
}
答案 2 :(得分:0)
下载时检查异步任务中的isCanceled()
。