2012-12-04 72 views
1

我在ActivityB的Oncreate()中創建async任務。 在這項任務我正在一個無限while循環doInBackground()雖然我移動到前面胡亞蓉並附帶再次向activityB,另一個異步任務得到了創建。doInBackground運行時可以停止asynctask嗎?

我的問題現已有二無限while循環運行。當我轉向上一個活動時是否可以停止異步任務?

+0

把''!isCancelled()''在你的循環條件中 然後調用''asyncTask.cancel(boolean); '' – 2012-12-04 07:33:23

+0

我需要調用asyncTask.cancel(boolean);? OnBackPressed功能? – Vignesh

+0

非常感謝特拉法加,它的工作很棒。 – Vignesh

回答

2

當然...退房isCancelled()

public Void doInBackground(....) { 

    while(!isCancelled()) { 
     ...endless activity... 
    } 

    return null; 
} 
+0

非常感謝323go,它的工作很棒。 – Vignesh

2

有一個Cancel()方法,但調用cancel(boolean mayInterruptIfRunning)不一定停止後臺進程的執行。

所有,通常情況是,會的AsyncTask執行onCancelled(),並且將無法運行onPostExecute()當它完成。

請參閱該文檔(「取消一個異步任務」部分)

http://developer.android.com/reference/android/os/AsyncTask.html

我會查看應用的設計和重新工作,它讓這種情況不會出現,而不是試圖取消運行異步任務。

相關問題