我在Activity和Application类中都放了onLowMemory(),注意当应用程序因内存不足而被杀死时,两种方法都不会被触发。
是否有回调方法找出应用程序被杀的原因?特别是,不是将触发onPause(),onDestroy()的正常流程。 例如。记忆力低/强制停止。
由于
我的应用程序被杀了,因为我尝试运行多个其他应用程序来模拟低内存情况。如果应用被杀,我有一个广播接收器观看。我发现,如果应用程序被操作系统的低内存杀死,则往往会重新启动应用程序。如果应用程序强制退出,例如使用应用程序快照删除它(按住home btn)。它不会重启。我的接收器将始终询问用户是否要重新启动应用程序。问题是如果应用程序由于内存不足而重新启动。我的广播接收器无法告诉应用程序如何结束并相应显示
答案 0 :(得分:3)
当调用onLowMemory()时没有精确定义,但通常在Android运行时已经安全杀死所有内容时发生。换句话说,当内存中剩下的唯一东西是活动服务和可见UI时。只有在那时,Android才会在每个正在运行的进程上调用此方法,以尝试让剩余的进程调整其内存使用量。它不会被警告为您的应用程序在其自己的特定地址空间中的内存不足。
如果你的应用程序使用大量内存并且当前不可见,那么它将永远是被杀的候选人。至于找出你的应用程序被杀的原因,原因总是Android运行时只需要它的内存地址空间。除了通常的onPause(),onStop(),onDestroy()序列之外,没有对您的应用程序进行回调。强制停止仅在您的应用崩溃或无响应时发生。