2010-12-13 93 views
19
can anybody have any idea how to stop ASyncTask thread in android?. 

其实我有一个循环创建线程并执行它们。当这个循环结束时,我想停止所有已经运行的线程。 反正有阻止线程?如何停止android中的ASyncTask线程

非常感谢。

+0

是什么让你认为在一个循环分叉线程是摆在首位的好主意看? – CommonsWare 2010-12-13 13:21:32

回答

41

根据我的经验AsyncTask,调用cancel(boolean mayInterruptIfRunning)不一定会停止后台进程的执行。看起来似乎发生的是AsyncTask将执行onCancelled(),并且将不会完成时运行onPostExecute()。这种行为可能取决于你在doInBackgound()

+20

是的。在doInBackground()中定期检查isCancelled()以查看是否应该停止工作并完成自己。 – icyerasor 2011-05-03 14:32:24

1

究竟你有什么代码在我的情况下,我用HttpPost,HttpGet等执行服务器请求。我发现可以结束的AsyncTask的唯一方法是调用abort()方法,你可以在下面的例子中

if (isCancelled) { 
    try { 
     //cancel the task and immediately abort the HttpRequest 
     uploadTask.cancel(true); 
     post.abort(); 
    } catch (UnsupportedOperationException e) { 
     e.printStackTrace(); 
    } 
}