2

突然之间,每次我启动我的应用程序时,我的用户偏好都会被清除。我没有在 Activity 中直接使用首选项,而是在我的 Application 对象中有一个辅助类,它可以像这样访问首选项:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

直到现在,这一直很有效。我有一个自定义应用程序类来管理应用程序的大部分内容,以避免在创建/销毁活动时重新生成此内容的问题。

我确实意识到有一种方法可以清除用户偏好,但我的代码中没有任何地方。当我开始使用 Proguard 构建发布版本时,这似乎确实开始发生了,但现在调试版本也发生了这种情况。从 Eclipse 重新下载新应用程序,或者甚至只是重新启动应用程序都会导致首选项被清除。

我一直在检查我最近的代码更改,但没有发现任何相关内容。当我即将在市场上发布应用程序时,我一直在调试和发布之间切换,但我认为这不会导致这样的问题。

有任何想法吗?

-凯文

4

2 回答 2

1

引用你...

当我开始使用 Proguard 进行发布构建时,这似乎确实开始发生了

由于发布版本和调试版本使用不同的密钥进行签名,因此它们不能在同一设备上共存。您确定在安装发布版本时没有卸载调试版本吗?卸载将取消与应用程序相关的任何偏好。

既然您说您没有可以删除首选项的代码,那么我所知道的让首选项消失的唯一另一种方法是物理首选项 XML 文件是否被清除或删除。因此,您可以检查以确保没有任何代码可以清除应用程序本地存储区域中的文件。

于 2011-01-23T20:18:33.457 回答
0

解决了。使用 Logcat,我在阅读首选项时终于注意到了一个异常。我正在用一个空键编写一个新的首选项,它导致了首选项加载异常。我的愚蠢错误。

于 2011-01-23T21:04:52.857 回答