2
我遇到了我的活動已暫停的情況,並從onPause()
方法中取消了我的AsyncTask
。然而,我的日誌顯示按時間順序以下事件:AsyncTask中是否存在併發錯誤?
OnPause
叫AsyncTask
從OnPause
取消。cancel(false)
返回true
表示任務已成功取消。onPostExecute
被稱爲,儘管contract that it won't ever be called if cancelled。
有沒有人看到這個? LogCat消息是否保證以準確的順序呈現?
查看我的編輯。即使'cancel(false)'的返回值爲true,我也會看到'onPostExecute'被調用。 – 2012-08-08 18:01:10
「如果調用成功,並且調用cancel時該任務還沒有開始,那麼這個任務不應該運行,如果任務已經啓動,那麼mayInterruptIfRunning參數確定執行這個任務的線程是否應該被中斷以試圖停止任務「 – noob 2012-08-09 05:35:24
因此,如果你調用cancel(false),並且任務已經開始,它將不會停止。然而,在這種情況下,cancel()的返回值沒有意義,儘管他們在文檔中寫了什麼,但它從來沒有用於我。相反,你應該嘗試取消(真)。 – noob 2012-08-09 05:36:54