0

我有一个 Android 应用程序,它有一个存储对多个实体类的引用的类。这门课效果很好,但有一个问题。

如果我在这个类中有数据,然后将应用程序移到后台(按主页按钮)并等待足够长的时间并用我的手机做其他事情,当我将应用程序带到前台时,数据就消失了。应用程序将加载到最后打开的屏幕(不重新启动应用程序),但存储在此类中的所有数据都消失了。

它并不总是发生,所以我认为这是某种内存管理问题,但我正试图找出一种方法来保持这些数据持久存在,或者,如果它存在但现在不存在,让应用程序从头重新启动。

我怎样才能保留这些数据/重建它?

4

2 回答 2

3

查看Activity 生命周期,以更好地了解您的 Activity 将如何以及何时被销毁、创建等。

在您的活动被销毁之前,onSaveInstanceState(Bundle)将在其上调用该方法。覆盖将状态保存到包的方法。以这种方式保存的数据将onCreate(Bundle)在后续调用中提供。

protected void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putString("myKey", "myValue"); // trivial, but for illustration purposes.
}
于 2013-04-08T08:17:24.947 回答
1

您可以将数据保存在 Bundle 对象中,该对象将作为参数传递给您正在加载的活动的 Oncreate。如果您存储的数据很小,那么您可以使用 sharedpreference 并在加载活动时将其取回。

我的猜测是,您可能会在活动的 onpause 方法中清除实体类的对象,因此您可能会丢失数据,只需检查一次..

于 2013-04-08T08:25:09.540 回答