2010-12-13 100 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(); 
    } 
}