3

我已经能够在我的应用程序中成功实现共享首选项,但是如果我通过任务管理器终止应用程序,我会遇到数据被重置/删除的问题。

我正在使用静态方法进行保存,这样我只需要该方法一次,并且可以在我的应用程序中的任何地方调用它。

protected static synchronized void save(Context cntx){
    SharedPreferences preferences2 = cntx.getSharedPreferences("BluRealms", 0);
    SharedPreferences.Editor editor = preferences2.edit();
    editor.putBoolean("level", Stats.level);
    editor.commit();
}

一旦我杀死我的应用程序,我的所有数据都会在我的 SharedPreferences 保存方法中设置回默认设置。

我也做了一些搜索,发现一些帖子说在清单文件中添加 android:persistent="true" 可以解决问题,但即使这样,数据仍然会重置。


编辑:嗯,我想我找到了一些关于我的问题的信息。此问题突出了三星 Galaxy S 手机无法正确保存 SharedPreferences 的问题,这是我正在测试的设备。http://code.google.com/p/android/issues/detail?id=14359 - 特别是评论 6

任何更多关于这方面的信息都会很棒!

4

2 回答 2

4

好的,我可以通过从我的保存方法中删除“受保护的静态”来解决这个问题。

我没有调用全局保存方法,而是简单地将保存方法放在需要保存的每个类中,然后只在 onPause() 和 onDestroy() 方法中调用保存方法。

我注意到,如果我在一个类中调用 save() 太多次,当我关闭应用程序时,这似乎也会删除我的 SharedPreferences。

小费:

不要使用静态方法获取或设置共享首选项

于 2012-08-13T16:11:49.293 回答
0

在我的情况下,从我的清单中删除标签 android:allowBackup = "true" ,这解决了我的问题

于 2021-10-01T16:35:12.820 回答