SharedPreferences有时会被删除

alm*_*oft 20 service android sharedpreferences

我的应用程序使用SharedPreferences(在PreferenceActivity的帮助下)存储所有设置.但有时会删除所有设置,并将所有值设置回默认值.主要在Android 3.x标签上.在普通的智能手机上没有问题.

我发现,当应用程序进程被Android杀死时,所有设置都会被删除.我注意到了这一点,因为不再显示通知图标.我也想知道为什么这个过程会在平板电脑而不是智能手机上被杀死.在我的智能手机上,通知图标永远不会消失.

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

有任何想法吗?我意识到SharedPreferences不应该被不同的进程使用,但它适用于所有智能手机而没有问题!

alm*_*oft 20

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

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

  • 从服务中删除对共享首选项的访问后,我发现问题已解决 (2认同)

Mur*_*rat 3

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