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