的方法根據文獻here詢問取消的AsyncTask
調用此方法會導致onCancelled(Object)將UI線程上被調用後doInBackground(對象[])返回
然而,在我的情況下onCancelled(Object)在我調用cancel方法後被調用。我的問題:文檔是否錯誤?
的方法根據文獻here詢問取消的AsyncTask
調用此方法會導致onCancelled(Object)將UI線程上被調用後doInBackground(對象[])返回
然而,在我的情況下onCancelled(Object)在我調用cancel方法後被調用。我的問題:文檔是否錯誤?
正常執行的AsyncTask
可以處於四種狀態:尚未執行,正在執行,已完成並已取消。如果任務已完成或取消,cancel()
方法不起作用。如果任務正在執行,則在調用onCancelled()
之前,必須完成doInBackground()
。但是,如果任務尚未開始執行,將立即調用onCancelled()
,您將無法執行任務。
我經歷了類似的問題。調用cancel()後,我的任務繼續運行。這對於Android 2.2和2.3是有效的。我最終定期檢查doInBackground中的isCancelled()。行爲是相同的,你可以調用cancel(true)或cancel(false)。
謝謝您的回覆。我的情況與您的opion不一樣。 doInbackground已開始。它在10秒內計入1-10。當它數到5時,我呼叫取消。日誌顯示onCancelled調用。但是,doInbackground任務繼續到10,現在它返回。 – teddy