【发布时间】:2013-03-25 15:33:03
【问题描述】:
我有一个带有Activity 的示例应用程序。我希望用户能够使用后退按钮离开应用程序,稍后通过应用程序的图标进行租用,而无需创建 Activity 的新实例。
问题是,如果我按下后退按钮并租用 n 次,那么我最终会得到 n 个应用程序实例(如内存分析工具中所观察到的)。
我尝试覆盖 onBackPressed() 来调用 finish()。在这种情况下,我可以看到 onDestroy() 被调用,但它仍然在内存中留下了多个 Activity 实例。我还尝试了不同的android:launchMode,包括"singleTop"、"singleTask" 和"singleInstance",但在所有情况下仍然有多个Activity 类的实例。
在这种简单的情况下,如何防止 Activity 的多个实例运行?
【问题讨论】:
-
默认情况下它应该按照你想要的方式工作,除非 Android 需要回收你的应用正在使用的资源。您应该阅读应用程序生命周期。
-
啊,你的回答让我记忆犹新,我的一个测试设备有一个不寻常的内存管理方案。具体来说,三星 S3 似乎有某种延迟 gc,因此,即使在其他设备更积极地释放内存之后,MAT 也会显示内存引用(参见之前的问题 here)。我用 Galaxy Nexus 重新测试,它的行为符合预期 - 所以我认为这是一个误报!无论如何,谢谢您的回复。