Mik*_*keL 2 android sharedpreferences android-sharedpreferences
我一直在加载并将 a 保存Set<String>到 Android 上SharedPreferences,它似乎工作正常,直到我测试了杀死它application并意识到未保存字符串集。
Set<String> stringSet = sharedPreferences.getStringSet(Constants.PREF_SHOULD_LOAD_SET, null);
if (stringSet != null) {
if (stringSet.contains(data)) {
stringSet.remove(data);
} else {
stringSet.add(data);
}
...
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putStringSet(Constants.PREF_SHOULD_LOAD_SET, stringSet);
editor.apply();
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的一些事情:
经过一些不成功的搜索后,我发现了这一点- 其他人也遇到了同样的问题。
他通过删除该值并再次添加它来解决此问题。
进一步阅读对他的帖子的评论揭示了原因,这是sharedPreferences.getStringSet文档:
请注意,您不得修改此调用返回的 set 实例。如果您这样做,则无法保证存储数据的一致性,也无法保证您修改实例的能力。
所以我采取了一个稍微不同的方法,并创建了一个新的集合如下:
if (loadSubSet != null) {
loadSubSet = new HashSet<>(loadSubSet);
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
521 次 |
| 最近记录: |