我的应用程序中有一个intentService,计划每5分钟调用一次。在该服务中,我使用与应用程序的其余部分共享的值(字符串,int ..)。我使用Singleton来保存这些值。这在大多数时候都很好。
然而有时,无缘无故(至少我可以看到),值会丢失,应用程序因此而崩溃。似乎单身人士失去了状态。
我已经读过Android可以从内存中删除它不需要的信息。出于这个原因,在我的活动中,当应用程序空闲时(onPause和onResume),我已将值保存在一个包中。
现在的问题是,在intentService中,情况有所不同。我每隔5分钟使用一个计时器调用该服务。
我需要一种方法来保留单例中的值。我宁愿不将它们保存在数据库中(每5分钟执行一次这似乎是一项繁重的任务),应该有一种更简单的方法。
我希望这很清楚,我很感激任何见解。
答案 0 :(得分:1)
我怀疑,因为你在你的应用程序中使用Singleton类,可能是android在你的内存低情况下杀死你的应用程序实例。所以你也可以丢失你的单例类对象。而不是这个,我建议你必须使用SharedPreferences
答案 1 :(得分:1)
如果您的进程被系统终止,则内存中的所有数据都将丢失。您不能始终依赖您的进程处于活动状态,以便您可以将这些数据保存在单例中。将这些数据存储在SQLite database中,将其存储在shared preferences或save it to a file中,您可以在下次初始化单例时将其读取。