2016-09-24 35 views
2

比方說,我開始和AsyncTask並保持對它的引用:如果/切換評估原子?

AsyncTask task = new SomeAsyncTask().execute(); 

然後在某一點,而該任務仍在運行,我執行以下操作:

if(task.getStatus() == AsyncTask.Status.RUNNING) { 
    task.cancel(true); 
} 

可以將狀態在AsyncTask的成爲後task.getStatus() == AsyncTask.Status.RUNNING回報truecancel()之前FINISHED叫?

換句話說,使用上面cancel()以上的代碼可能會在完成的AsyncTask上被調用嗎?

+3

是的,這是可能的。 – yole

+0

是的,這是一種可能性。您可以在任務中使用wasCancelCalled()進行更多檢查 –

+1

如果您想在任務完成後執行某些操作,請使用onPostExecute –

回答

3

是的,這是可能的,這是異步編程的本質。

但是,如果任務在這兩個陳述之間完成,您撥打cancel的電話將是良性的。