SharedPreferences有时会被删除

我的应用程序使用SharedPreferences(借助PreferenceActivity)来存储所有设置。 但是有时候所有的设置都被删除,所有的值都被设置为默认值。 主要在Android 3.x选项卡上。 在正常的智能手机上没有问题。

我观察到,应用程序进程被Android终止时,所有的设置都被删除。 我注意到这是因为通知图标不再显示。 我也想知道为什么这个过程在平板电脑上而不是在智能手机上死亡。 在我的智能手机上,通知图标不会消失。

我的应用程序也有一个服务,主进程和服务都读写SharedPreferences的设置。 我有时会注意到,一旦服务写入SharedPreferences,所有设置都会被清除。 但是这并不是每次都发生。

有任何想法吗? 我意识到SharedPreferences不应该被不同的进程使用,但它可以在所有的智能手机上正常工作!

Related of "SharedPreferences有时会被删除"

我发现设置消失的原因:如果两个进程将数据写入SharedPreferences,则可能会发生所有SharedPreferences被重置为默认值的情况。 在我的情况下,当服务将第一个数据写入SharedPreferences时,所有的设置都被清除。

现在,该服务仅提供对SharedPreferences的读取访问权限。 两个进程写入的设置都存储在数据库中。

我有同样的问题。 如果偶尔用key = null写入一个值,共享首选项中的所有值都将成为默认值。 当你使用Eclipse创build新的常量时,这是可能的,默认情况下它们默认为null,然后你忘记了到类的开始,并将常量改为一些有意义的值。 如果您继续使用该应用程序,则读取共享首选项的操作将返回有效值。 但是当上下文被改变(例如,当android被杀死并被重新创build时)共享首选项中的所有值将返回默认值(零)。

所以请检查你的共享偏好的关键! 我希望这个答案会帮助别人。

SharedPreferences通常工作得很好,正如你所提到的,在智能手机上没有任何问题。 它也应该在平板电脑上工作。 然而,最好是使用sqlite或支持你的服务器上的每个用户ID共享前缀数据丢失是一个问题。