【发布时间】:2012-05-18 18:11:14
【问题描述】:
我正在开发一个包含一些活动的应用程序。一个活动开始下一个活动。为了分享一些价值,我使用了一个名为 MyApplication 的自定义应用程序实现(我说的是 android.app.Application)。
众所周知,Android 系统会在应用程序需要更多空间时将其杀死。但这会导致一个问题:
- 我打开我的应用程序并像使用任何其他应用程序一样使用它
- 我关闭它(主页按钮)并使用其他应用程序
- 系统将杀死我的应用程序,因为它正在浪费内存
- 当我重新打开我的应用程序时,它想打开我使用的最后一个活动并且我强制关闭,因为 MyApplication 中的值为 null
奇怪的是,系统破坏了我的应用程序,但它似乎保留了 Activity。我真的不明白为什么会这样,因为应用程序似乎没有生命周期。
我想拥有的:
当 MyApplication(整个应用程序,不仅仅是活动)被杀死时,我希望最后的活动也被杀死。因此,当我重新打开应用程序时,它会启动 manifest.xml 提供的主要活动。
或
MyApplication 中的值是持久存在的,并且在应用程序被破坏时不会丢失。 (我说的是一些对象,所以我认为共享首选项不起作用)。
我不想使用服务来绑定我的活动,但是有没有类似的方法告诉系统我上次使用的活动取决于应用程序上下文?
我希望你明白我的问题是什么,有人可以帮助我解决这个问题。
【问题讨论】:
-
我喜欢所有答案似乎都没有提到您对自定义应用程序的使用,即使您清楚地注意到它的用途:/)。您是否尝试过使用 Application.ActivityLifecycleCallbacks,甚至不确定这是否是您想要完成的(似乎您可能需要反向directio)。
-
我认为您指的是 Activity Stack History,仪式?
-
感谢 MikeIsrael,你是对的。以下答案与我的问题无关。使用活动生命周期只是一种解决方法。如果整个应用程序被杀死,我希望应用程序可以处理它的活动并杀死它们。活动堆栈历史记录而不是处理后退按钮行为而不是我的问题。我真的很确定这是一个应用程序问题,而不是一个活动问题。
-
@joshplusa 你找到解决方案了吗?我现在遇到了完全相同的问题,因为我的
android.app.Application包含大量“全局”数据,并且我发现有时在返回应用程序时活动堆栈仍然存在(例如,我返回到一个活动依赖于该全局数据),但.application扩展已被杀死。这很令人困惑,因为我的印象是.application实例会在任务的整个生命周期内持续存在。
标签: android application-lifecycle