2015-10-08 97 views
0

有没有办法取消所有正在运行的Asynctask实例?提前致谢。取消所有正在运行的AsyncTask实例

我想取消按下按钮上的进度对话框,同时从同一段代码中的所有的异步ASK的实例。

+1

调用'cancel'方法。请参阅:http://developer.android.com/reference/android/os/AsyncTask.html#cancel(boolean) –

+1

[Android:取消异步任务]的可能重复(http://stackoverflow.com/questions/ 6039158/android-cancel-async-task) – Sree

+0

您无法取消所有实例,而无需引用每个AsyncTask。阅读有关cancel()形成AsyncTask的文档。 – JoxTraex

回答

2

您不能取消所有实例参考,EACH个人的AsyncTask。

阅读有关cancel()确实形成AsyncTask的文档。

一旦你有每个AsyncTask的引用,那么你可以取消它们中的每一个。

1

使用下面的代码来取消运行的AsyncTask

if(myAsyncTask.getStatus().equals(AsyncTask.Status.RUNNING)) 
    { 
myAsyncTask.cancel(true); 
} 
+0

这个答案已经存在请理解问题陈述 – Awadesh

0

在您的活动(或任何可见的asynctasks)设置一个布尔标志和的AsyncTask里面做:

while (flag) { 
    your_logic; 
} 

当标志按back设置为false,每一个的AsyncTask应停止本身 - 那么你不不需要参考asyntasks本身,因为他们会完成所有的工作。

0

找到了解决办法:我uploadingDialog.show()这样的前添加一个动作监听:

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

那当我按下后退按钮的方式,上述OnCancelListener取消对话框和任务。如果你想完成后面按下的整个活动,你也可以添加完成()。请记住,你的声明异步任务,像这样的变量:

MyAsyncTask myTask=null; 

并执行这样的任务异步:

myTask = new MyAsyncTask(); 
myTask.execute(); 

参考:Android: Cancel Async Task

+0

这不是针对他的问题。他并没有问你如何取消一个AsyncTask,而是询问你如何取消几个。请参阅我的帖子。 – JoxTraex

相关问题