【发布时间】:2011-11-18 06:53:22
【问题描述】:
我的应用使用 SharedPreferences(在 PreferenceActivity 的帮助下)来存储所有设置。但有时会删除所有设置并将所有值设置回默认值。主要在 Android 3.x 选项卡上。 在普通智能手机上没有问题。
我观察到,当应用程序进程被 Android 杀死时,所有设置都会被删除。 我注意到这一点是因为不再显示通知图标。 我还想知道为什么该过程在平板电脑上而不是在智能手机上被终止。在我的智能手机上,通知图标永远不会消失。
我的应用也有一个服务,主进程和服务都对 SharedPreferences 进行读写设置。 我有时注意到,一旦服务写入 SharedPreferences,所有设置都会被清除。但并非每次都会发生。
有什么想法吗? 我意识到 SharedPreferences 不应该被不同的进程使用,但它可以在所有智能手机上正常工作!
【问题讨论】:
-
最后一句话:Activity和Service都运行在同一个进程中。它们只是同一应用程序的不同组件。
-
我注意到 SharedPreferences 在某些手机上也被删除了。我无法确定 100% 的原因是什么。但我只是切换到一种新的数据存储模型作为一种潜在的解决方法。
-
@mice:你确定吗?因为在 LogCat 中它们有不同的 pid(进程 ID)
-
@Tim:您是如何实现设置存储的?它是否与 PreferenceActivity 兼容?
-
我试过这个:
getPreferenceManager().setSharedPreferencesMode(Context.MODE_PRIVATE | Context.MODE_MULTI_PROCESS);in onCreate()。但这不是解决方案。一段时间后,所有设置都已重置为默认值。
标签: android service sharedpreferences