Java SharedReferences已更新,但在应用程序重置时重置

Java SharedReferences已更新,但在应用程序重置时重置,java,android,Java,Android,无论何时启动我的应用程序,我都有以下代码: C.userPreferences = getSharedPreferences("default",0); C.userPreferencesEditor = C.userPreferences.edit(); C.something = C.userPreferences.getStringSet(C.SOMETHING, null); C.something = C.something == null ? new HashSet<Stri

无论何时启动我的应用程序,我都有以下代码:

C.userPreferences = getSharedPreferences("default",0);
C.userPreferencesEditor = C.userPreferences.edit();

C.something = C.userPreferences.getStringSet(C.SOMETHING, null);
C.something = C.something == null ? new HashSet<String>() : C.something;

for(String str : C.something){
    Log.d("debugging C.something",str);
}
调试显示“一”、“二”和“名称”。 当我重新启动应用程序并第一次调试时,我只获得“一”和“二”。 你知道为什么会这样吗?tyvm说

应用程序必须将从各种get方法返回的对象视为不可变的

:

请注意,您不能修改此调用返回的set实例。如果您这样做,则无法保证存储数据的一致性,也根本无法修改实例

您是否可以尝试复制检索到的哈希集,向副本中添加新条目,并将其保存在首选项中?

顺便说一句,我真的很想知道为什么会这样-不是很直观

C.something.add("name");
C.userPreferencesEditor.putStringSet(C.SOMETHING, C.something);
C.userPreferencesEditor.apply(); //or with .commit();