Android应用程序 - 保存状态

时间:2013-01-16 08:51:12

标签: java android eclipse android-activity

我有自己的Application类对象,用于存储所有应用程序数据。在Application.onCreate中,我创建了所有应用程序对象并从SharedPreferences中读取数据。我的问题是,当应用程序进入后台时,它可能会被杀死。从启动器中选择应用程序后,将恢复活动堆栈(启动最后一个活动,而不是启动活动)。问题是没有调用Application.onCreate因此没有加载所有应用程序对象,我遇到了麻烦。 WHat是存储/恢复应用程序数据/对象的最佳方式。我知道它可以在Activities.onCreate / onDestroy中完成,但我在我的应用程序中有很多活动,并且不知道,当应用程序被杀死/重新启动时,它们将位于顶部。

2 个答案:

答案 0 :(得分:1)

序列化ApplicationObject并将其存储到File(简单)或Object Store(复杂)

或者您可以实现序列化/反序列化功能

其中,Serialize将对象属性转换为JSON并存储

DeSerialize将加载JSON并填充Object并返回。

答案 1 :(得分:0)

当您启动应用程序并从最后一个活动开始而不是从启动器活动开始时,这意味着您的应用程序尚未被杀死。因此,在这种情况下,您的应用程序的onCreate方法将不会被调用,因为它仍然存在。

应用程序的onCreate方法在应用程序的生命周期中调用一次。因此,在您的app类处于活动状态之前,您应该可以访问所有应用程序数据。

如果你需要测试,当你的应用程序被杀死时会发生什么,所以你应该去“应用程序管理器”并手动杀死应用程序。

编辑: 如果您的应用程序处于活动状态,只要您的应用程序具有对数据的引用,就不能通过gc删除它们。因此,在您的情况下,您可能忘记正确更新数据。因此序列化在这种情况下不会帮助你,否则你会有bug。