生命周期的Android内存管理

时间:2010-12-17 17:07:39

标签: android memory-management lifecycle

我正在尝试确定如何在各种Android生命周期条件下保持我的应用程序安全,例如另一个应用程序正在启动,手机进入睡眠等等。我了解生命周期状态和我可以挂钩的事件方法,但我我不确定如何处理有关我已经引用的内容的内存。我很清楚,如果操作系统需要,我的应用程序可能随时被杀死,但个别参考文件呢?以下是一些示例场景:如果我的应用程序正在运行且用户接到电话,或者用户启动了另一个应用程序,或者手机进入睡眠状态。假设我的应用程序没有被杀死,我可以安全地使用我的引用还是我会得到随机的空指针?我想这归结为...... Android是杀死还是不杀死应用程序,还是会从应用程序中回收一些内存(哪些仍然有效的引用)而不会杀死它?

2 个答案:

答案 0 :(得分:2)

大多数情况下,当用户切换到另一个应用程序或接听电话时,您的应用程序将被暂停。当它返回时,onResume()将被调用,并且它将继续运行,没有任何问题。参考文献和那种东西应该没问题。建议您取消注册侦听器并在onResume()中重新注册它们。

您应该始终记住,您的应用也可能随时被完全杀死,因此请保存您的数据。

答案 1 :(得分:2)

事实是,大多数情况下,应用程序不会在短暂的中断中被杀死,例如电话或电子邮件,但如果你想支持这些情况,你应该预先清理或保存onPause()中的数据。当应用程序返回时,它将执行onResume()

在活动被破坏之前参考不会消失,不要担心暂停中的NPE - >恢复方案,除非你做的事很奇怪。

如果您使用的是听众或GPS,则应在onPause()期间取消注册并稍后恢复。