1

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

4

2 回答 2

1

序列化您的 ApplicationObject 并将其存储到文件(简单)或对象存储(复杂)

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

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

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

于 2013-01-16T08:52:34.833 回答
0

当您启动应用程序并且它从最后一个活动而不是从启动器活动开始时,这意味着您的应用程序尚未被终止。所以在这种情况下,您的应用程序的 onCreate 方法将不会被调用,因为它还活着。

应用程序的 onCreate 方法在应用程序的生命周期内被调用一次。因此,在您的应用程序类生效之前,您应该可以访问所有应用程序数据。

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

编辑:如果您的应用程序还活着,只要您的应用程序有对数据的引用,它们就不能被 gc 删除。因此,就您而言,也许您忘记正确更新数据。所以在这种情况下,序列化对你没有帮助,否则你会有错误。

于 2013-01-16T09:08:12.257 回答