应用程序上下文被杀死但活动没有

时间:2012-05-10 07:40:49

标签: android application-lifecycle

我正在开发一个有一些活动的应用程序。一个活动开始下一个活动。要分享一些值,我正在使用一个名为MyApplication的Application的自定义实现(我在谈论 android.app.Application )。
众所周知,如果需要更多空间,Android系统会杀死一个应用程序。但这导致了一个问题:

  • 我打开我的应用程序并像使用任何其他应用程序一样使用它
  • 我关闭它(主页按钮)并使用其他应用
  • 系统将终止我的应用程序,因为它浪费内存
  • 当我重新打开我的应用程序时,它想要打开我使用的最后一个活动并且我强制关闭,因为MyApplication中的值为null

奇怪的是,系统会破坏我的应用程序,但它似乎保留了Activity。我真的不明白为什么会这样,因为应用程序似乎没有生命周期
我想要的是:
当MyApplication(整个应用程序,不仅是活动)被杀死时,我希望最后的活动也被杀死。因此,当我重新打开App时,它会启动manifest.xml提供的主要活动
MyApplication中的值是持久的,如果应用程序被销毁,不会丢失。 (我说的是一些对象,所以我认为共享偏好不起作用) 我不想使用服务将我的活动绑定到,但有没有类似的方法告诉系统我上次使用的活动取决于应用程序上下文?

我希望你明白我的问题是什么,有人可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

正确的做法是保存您的应用程序状态。 覆盖onSaveInstanceState(Bundle savedInstanceState)方法以保存状态,并覆盖onRestoreInstanceState以检索它。

如果需要保存大量数据,请考虑使用SQL数据库

答案 1 :(得分:0)

您应该确保应用关闭并以onPause()onResume()onStop()方式重新启动您希望的方式。查看可以保存应用状态的savedInstanceState(当它作为参数发送到onCreate时恢复它)

答案 2 :(得分:0)

在自定义应用程序的实现中,添加一个Flag说:

public boolean appContextExist = false;

在您的第一个Activity上将标志设置为true,

覆盖Activity上需要上下文的onCreate和onResume方法,添加以下内容:

MyApplication myApp = ((MyApplication) getApplicationContext());
if (!myApp.appContextExist) {
    // Code to return to start activity here
}