Android,为后台服务保留Singleton中的值

Android,为后台服务保留Singleton中的值,android,singleton,intentservice,Android,Singleton,Intentservice,我的应用程序中有一个intentService,计划每5分钟调用一次。在该服务中,我使用与应用程序其余部分共享的值(字符串、int…)。我使用单例来保存这些值。这在大多数情况下都很有效 然而,有时,由于没有任何原因(至少我可以看到),这些值丢失,应用程序因此崩溃。看来独生子女失去了这种状态 我读到安卓可以从内存中删除它认为不必要的信息。由于这个原因,在我的活动中,当应用程序空闲时(onPause和onResume),我将这些值保存在一个捆绑包中 现在的问题是,在intentService中,情况

我的应用程序中有一个intentService,计划每5分钟调用一次。在该服务中,我使用与应用程序其余部分共享的值(字符串、int…)。我使用单例来保存这些值。这在大多数情况下都很有效

然而,有时,由于没有任何原因(至少我可以看到),这些值丢失,应用程序因此崩溃。看来独生子女失去了这种状态

我读到安卓可以从内存中删除它认为不必要的信息。由于这个原因,在我的活动中,当应用程序空闲时(onPause和onResume),我将这些值保存在一个捆绑包中

现在的问题是,在intentService中,情况有所不同。我使用计时器每5分钟呼叫一次服务

我需要一种方法来保留singleton中的值。我不希望将它们保存在数据库中(每5分钟保存一次似乎是一项繁重的任务),应该有一种更简单的方法


我希望这是清楚的,我很感谢您的任何见解。

当您在应用程序中使用Singleton类时,我怀疑的是android可能会在内存不足的情况下杀死您的应用程序实例。因此,也可能会丢失单例类对象。与此相反,我建议您必须使用

如果您的进程被系统终止,那么内存中的所有数据都将丢失。您不能依赖流程始终处于活动状态,以便将数据保存在单例中。要么将数据存储在中,要么将其存储在中,或者您可以在下次初始化singleton时读取这些数据。

因此,使用SharedReference,我可以确保信息不会丢失?我可以在以后更改SharedReference吗?是的,在应用程序未从设备中删除或缓存清除之前,您的信息将一直保存(我对此感到困惑)。您可以修改共享的首选项数据,其行为类似于带有键值对的映射。只是存储在应用程序数据目录中的某个文件中。