2015-04-06 78 views
1

爲的AsyncTask的cancel()方法狀態的文檔:cancel()之後的AsyncTask狀態?

調用此方法保證onPostExecute(Object)永遠不會調用。

的文檔AsyncTask.Status.FINISHED狀態:

表示onPostExecute(Result)已經完成。

這是否表示取消的AsyncTasks的狀態爲RUNNING?在那種情況下,我如何從已取消的任務中告訴正在運行的任務?

回答

4

根據the source code to AsyncTask,當後臺工作完成時,將調用onCancelled()onPostExecute()。之後,狀態設置爲FINISHED。在此之前,任務大概是RUNNING

您也可以致電isCancelled()查看任務是否已取消,然後進入FINISHED狀態。

0

CommonsWare answer絕對正確!

只是想從AsyncTask添加特定的代碼片段,以證明他的正確性:

private void finish(Result result) { 
    if (isCancelled()) { 
     onCancelled(result); 
    } else { 
     onPostExecute(result); 
    } 
    mStatus = Status.FINISHED; 
}