首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SharedPreferences有时会被删除

SharedPreferences有时会被删除
EN

Stack Overflow用户
提问于 2011-09-16 06:30:16
回答 3查看 8.7K关注 0票数 20

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

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2011-09-21 07:19:59

我发现了这些设置消失的原因:如果两个进程将数据写入SharedPreferences,那么所有的SharedPreferences都会被重置为默认值。在我的例子中,当服务将第一个数据写入SharedPreferences时,所有设置都会被清除。

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

票数 22
EN

Stack Overflow用户

发布于 2011-09-16 06:35:44

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

票数 3
EN

Stack Overflow用户

发布于 2013-10-30 16:06:20

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

因此,请检查您的共享首选项的密钥!我希望这个答案能对某些人有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7438195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档