代码之家  ›  专栏  ›  技术社区  ›  MikeL

禁用应用程序时不保存字符串集的共享首选项(这是一项功能)[重复]

  •  1
  • MikeL  · 技术社区  · 7 年前

    我一直在加载和保存 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();
    }
    

    我尝试过的一些事情:

    • 使用提交(而不是应用)
    • 看看其他可能改变价值的地方
    • 调试并查看值是否已保存
    1 回复  |  直到 7 年前
        1
  •  3
  •   MikeL    7 年前

    this -其他人也有同样的问题。

    进一步阅读他文章中的评论揭示了原因,这是 sharedPreferences.getStringSet

    if (loadSubSet != null) {
        loadSubSet = new HashSet<>(loadSubSet);
    ...