如果我有一個AsyncTask無限期地運行,並且Android決定需要終止該任務,或者釋放內存或者因爲設備正在進入睡眠模式(用戶按下電源按鈕),那麼是否AsyncTask中的某種方式可以從操作系統獲得即將被殺死的通知,以便採取行動來完成任何未完成的任務?當Android殺死一個AsyncTask時檢測
回答
爲了給你一個簡單的答案:
只要一個的AsyncTask生活的過程中它是聯繫在一起的生活。如果它的進程仍在運行(即使在後臺運行),OS永遠不會終止AsyncTask。
另請注意,AsyncTask獨立於啓動它的Activity運行。該活動可能會被銷燬,AsyncTask依然存在,直到該進程被銷燬。
編輯 您需要調用doInBackground()方法內的isCancelled()以確保操作系統銷燬AsyncTask時,doInBackground完成,以便執行onCancelled()方法。
所以總結一下:在doInBackground方法中總是檢查isCancelled布爾函數。如果它返回true,則從doInBackground返回。自動執行onCancelled函數,而不是onPostExecute。在那裏,你可以放置你想要執行的代碼,在它死之前。
我不相信那是真的。操作系統肯定會殺死任何它認爲必要的東西,即使是在惡劣條件下的前臺服務。如果操作系統能夠殺死前臺服務,那麼對於銷燬AsyncTask肯定不會再三思。 – AndroidDev
在「惡劣條件下」它會殺死整個過程。它不能單獨殺死AsyncTask。 –
另外,您應該保留對AsyncTask的引用,並在需要知道它是否仍然存在時進行檢查。 –
- 1. 如何殺死一個Activity和AsyncTask
- 2. 殺死Android AsyncTask的是什麼?
- 3. 如何在殺死一個php腳本時殺死passthru進程?
- 4. 當zygote死亡時,android如何殺死app進程?
- 5. 如何檢測並殺死一個楔入的soffice.bin進程?
- 6. 如何檢測殺死進程事件
- 7. 檢測會話掛起並殺死它
- 8. 在java中殺死一個線程android
- 9. 在android中殺死一個活動
- 10. android如何殺死另一個活動?
- 11. 如果一個活動被殺死,AsyncTask是否繼續存在?
- 12. 不能殺死當前進程android
- 13. 殺死一個tasklet同時holdiing spin_lock_irqsave
- 14. 暫時殺死一個活動
- 15. 在C中殺死一個pthread而不殺死整個進程
- 16. Android殺死進程
- 17. Android:殺死線程
- 18. Bash腳本:當其他完成時殺死一個進程
- 19. 殺死一個python進程
- 20. 殺死一個Windows服務
- 21. 殺死一個線程
- 22. 殺死一個cron作業
- 23. 殺死一個線程
- 24. 殺死一個mpi進程
- 25. 當用戶殺死一個應用程序(android)時會清除什麼?
- 26. 當按下時服務被殺死
- 27. aSyncTask死鎖第二個aSyncTask
- 28. Pixastic IE測試殺死IE9
- 29. 在webview加載時殺死Android活動
- 30. Android殺死進程時未調用saveInstanceState
這不能回答我的問題。我的問題不是關於行動的時間長短。這是關於檢測線程的殺死。 – AndroidDev
你無法檢測到線程被殺死,也許這個回調會有幫助:'''Application.onLowMemory()''' –
如何使用AsyncClass.isCancelled() - 如果這個任務在正常完成之前被取消,則返回true OR AsyncClass.cancel(boolean) - 嘗試取消執行此任務? – AndiM