如果应用程序在后台运行时间过长,Android类数据会消失

时间:2013-04-08 08:12:00

标签: android

我有一个Android应用程序,其中包含一个存储对多个实体类的引用的类。这个课程运作良好但有一个问题。

如果我在此课程中有数据然后将应用程序移动到后台(按主页按钮)并等待足够长的时间并使用我的手机执行其他操作,当我将应用程序带到前台时数据就会消失。应用程序将加载到上次打开的屏幕(不重新启动应用程序),但此类中存储的所有数据都将消失。

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

如何保留此数据/重建它?

2 个答案:

答案 0 :(得分:3)

查看Activity Lifecycle以更好地了解您的活动将如何以及何时被销毁,创建等。

在销毁活动之前,将调用onSaveInstanceState(Bundle)方法。重写方法以将状态保存到捆绑包。以这种方式保存的数据将在后续调用中提供给onCreate(Bundle)

protected void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putString("myKey", "myValue"); // trivial, but for illustration purposes.
}

答案 1 :(得分:1)

U可以在Bundle对象中保存数据,此对象将作为参数传递给您正在加载的Oncreate of activity。如果您存储的数据很小,那么您可以使用共享首选项并在加载活动时将其取回。

我的猜测就像你可能在活动的onpause方法中清除实体类的对象,所以你可能会丢失数据,只需检查一次......