手机没电时会调用 onDestroy 方法吗?我想它没有。不幸的是,我现在没有手机可以测试这个,否则我只会自己检查。
4 回答
实际上,不知道会发生什么。甚至怀疑onDestroy()
在正常情况下是否会被调用。
应该调用的少数情况onDestroy()
之一是使用按钮或显式中的事件导致调用. 结果,理论上,将被停止(被调用)然后被销毁(被调用)。Activity
BACK
Activity
finish()
Activity
onStop()
onDestroy()
当进程实际上被“杀死”时,应用程序组件的完全关闭就产生了歧义——这就是为什么任务杀手如此邪恶,因为它们基本上强行将进程从内存中取出,而不管运行状态如何,并且通常会阻止任何清理操作的发生。
在绝对紧急情况下(例如当电池电量处于绝对最小值时),系统将尽其所能尽可能干净地关闭任何正在运行的进程,但不能保证它会成功完成此操作。
特别是,如果您有任何需要保存的“关键任务”数据或状态,请在Activity
暂停时执行(即,在onPause()
或至少在停止时(在 中onStop()
)。
由于我上面概述的原因,我个人很少使用onDestroy()
- 通常我致力于创建 -> 开始 -> 恢复 -> 暂停 -> 停止 - 重新启动生命周期方法。
最后,您必须记住,您的应用程序可能有许多不同的组件(活动、服务以及显式或隐式应用程序)——在电池电量不足的情况下,每个组件的处理方式可能不同。但是,总而言之,如果进程被“撕掉”内存并被强制停止,则无法保证在重新充电并重新启动应用程序后会发现什么,除非您计划保存数据和/或状态。
我现在无法检查,但是由于设备在实际关闭之前会经历整个关机程序,因此您可以通过关闭它在模拟器中对其进行测试(F7 模拟电源按钮)
希望能帮助到你!
不,它不会调用 onDestroy() 方法。因为只有在活动被销毁或退出时才会调用它,但在您的情况下,整个应用程序都会从内存中删除。更好的选择是跟踪电池电量,当电量达到 0.5% 或 0.6% 时,运行您想要在 onDestroy 运行的命令。
这说起来很复杂,但在我看来,当设备意外关闭时,操作系统会在所有内容上调用 onDestroy()