5

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

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

奇怪的是,系统破坏了我的应用程序,但它似乎保留了活动。我真的不明白为什么会这样,因为应用程序似乎没有生命周期。

我想要什么:
当 MyApplication(整个应用程序,不仅仅是活动)被杀死时,我希望最后的活动也被杀死。因此,当我重新打开应用程序时,它会启动 manifest.xml 提供的主要活动。

MyApplication 中的值是持久的,并且在应用程序被破坏时不会丢失。(我说的是一些对象,所以我认为共享首选项不起作用)。
我不想使用服务将我的活动绑定到,

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

4

3 回答 3

1

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

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

于 2012-05-10T07:46:28.650 回答
0

您应该确保应用程序在onPause(),onResume()onStop()方法中以您希望的方式关闭并重新启动。检查savedInstanceState哪些可以保存应用程序的状态(并在它作为参数发送到 onCreate 时恢复它)

于 2012-05-10T07:47:38.623 回答
0

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

public boolean appContextExist = false;

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

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

MyApplication myApp = ((MyApplication) getApplicationContext());
if (!myApp.appContextExist) {
    // Code to return to start activity here
}
于 2013-11-11T20:22:50.887 回答