Android 在onDestroy进行所有清理安全吗?
更具体地说:在onDestroy中取消任务是否安全?另外,使用onDestroy注销接收者和释放资源是否安全 我的目标是确保在销毁活动时取消/销毁我的任务,而不是在此之前 onDestroy():Android 在onDestroy进行所有清理安全吗?,android,android-asynctask,android-activity,activity-lifecycle,ondestroy,Android,Android Asynctask,Android Activity,Activity Lifecycle,Ondestroy,更具体地说:在onDestroy中取消任务是否安全?另外,使用onDestroy注销接收者和释放资源是否安全 我的目标是确保在销毁活动时取消/销毁我的任务,而不是在此之前 onDestroy(): 当活动被销毁并且必须删除资源时调用 释放 当活动被匆忙销毁时(当 系统资源不足等) 第一种情况很清楚:我在onDestroy中进行所有清洁,不会出现任何问题。不过,第二种情况有点问题。当活动被销毁且onDestroy被跳过(因此我不会取消我的任务)时,任务是否会继续执行,然后完成并尝试更新已死亡的活动
我们来到了真正的问题:
让我们关注onDestroy(),因为解决方案不在onPause()或onStop()中。论据:
- 当活动被销毁时,可以跳过onStop(),就像onDestroy一样
- onPause调用得太早且太频繁,因此不适合该用例。示例:
另外,如果答案是在onDestroy中进行清理不安全,这意味着Android框架要求我们停止在onPause中所做的一切。然后我就看不出有任何理由使用onDestroy…就我使用android而言 1当你的应用程序崩溃时,与之相关的所有资源都会被销毁 2当设备更改配置导致活动被销毁并重新创建时 3当后台运行的应用程序和Android由于内存不足而将其杀死时 除此之外,其他回调方法称为 1当另一个活动出现时,或您的设备锁定..等
在所有情况下,根据您的要求,您可以在onDestroy中释放所有资源,取消线程和Asyntask,停止所有服务等。如果您希望在调用destroy时任务保持暂停和活动状态,则可以保存配置,并在再次调用onCreate时保留它,方法是检查是否为null。我想让你看看这个婴儿: 基本上,它为您提供了系统认为有助于取消任务和清理内存的所有位置: 请仔细查看以下两个案例: TRIM_MEMORY_UI_HIDDEN-该进程一直显示用户界面,现在不再显示 TRIM_MEMORY_COMPLETE(修剪内存)-该过程接近后台LRU列表的末尾 你问的大多数问题都是这样的 使用相同的方法,您还可以捕获TRIM_MEMORY_RUNNING_CRITICAL,这将在系统没有内存的情况下向您发出警告,必须立即采取特殊措施
在类似的情况下,这种方法让我的开发生活变得更好。如果您只需要进行一些清理,无论活动如何关闭,您都应该能够使用和的组合。无论发生什么情况,都应该调用其中一个。在您的活动中可能有一个
布尔清理完成
,这将在两个清理中的一个完成时设置
关于用户数据的保存,请查看:
谷歌建议
“就地编辑”用户模型
即:用户创建新数据后立即保存,最迟在onPause()
中保存。这并不意味着你需要