当应用程序强制关闭或崩溃时,共享首选项会重置

cot*_*aws 10 crash android preferences sharedpreferences

我注意到,如果应用程序强制关闭或由于某种原因被系统杀死,我的应用程序的SharedPreferences将完全重置.显然,是的,我应该首先避免崩溃,但它确实发生了.如果确实发生了这种情况,用户不应丢失所有设置以及使用"首选项"存储的其他数据.

在Google网上论坛上找到了这个帖子,但他们无法解决.

任何人都可以了解为什么或如何发生这种情况以及是否有办法阻止它?

另外,我在2.1和2.2设备上看到了这一点.它会在每次崩溃时发生,而不仅仅是其中一些.

谢谢

cot*_*aws 9

经过一番挖掘后,我终于发现了问题的根源.通过我的代码中的错误,字符串首选项被使用null键保存.因此在崩溃后加载首选项时,首选项xml文件中有一个空白,导致首选项崩溃并被重置.出于某种原因,我没有得到首选项崩溃的堆栈跟踪,只是初始崩溃的直接原因.

只是为了添加更多细节,以防其他人将来遇到类似的问题:

具有首选项的xml文件保持完整,直到按下强制关闭按钮.然而,下次访问共享首选项时,xml文件被清除并重新启动.