如果我有一个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