-1

在我的应用程序中,我有一个与所有活动通信并拥有所有应用程序数据的单例类。突然之间,对象开始变为空。当我更改顶级活动(使用意图)时,它似乎正在发生。是否有一种简单的方法可以确保只要我的活动可见,对象就会持续存在。

4

3 回答 3

1

我认为一个新的顶级活动是在一个新的过程中进行的(在http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle的行之间阅读)。

Android 更有可能杀死存在于后台的 Activity 进程,这包括顶级 Activity 落后于另一个 Activity 时。

我认为一个更好的解决方案可能是让你的 Singleton 透明地初始化自己,如果需要的话,从磁盘加载和保存任何状态(一个非常标准的单例范例)。没有办法通过跨新旧活动的单个实例来解决您的问题。

编辑:我不相信服务是要走的路。服务用于在手机后台进行活动,而您所说的是数据存储和检索。我认为,最自然的方法是让每个 Activity 对它是否是第一个 Activity 都具有鲁棒性。

于 2012-07-03T21:32:09.363 回答
0

如果是我,我会使用 aService而不是单例来管理跨活动共享的应用程序数据。它会更加健壮。

有关详细信息,请参阅服务开发人员指南

于 2012-07-03T21:11:31.810 回答
0

您必须错误地使用单例,单例对象应该在应用程序生命周期内有效。是否重新创建和销毁此应用程序中的活动并不重要。

但是,如果您的单例正在引用活动(例如,活动上下文,活动变量,如小部件),那么即使单例对象本身仍然有效,这些变量/上下文也可能在某些时候无效。

于 2012-07-03T21:26:45.140 回答