我在共享首选项中保存了一个字符串集,如果我读出它就可以了。我开始其他活动,回去再读一遍,就可以了。如果我关闭应用程序并重新启动它,我会得到集合,但只有 1 个项目而不是 4 个项目。它一直在发生。有已知问题吗?我能做错什么?
在一个类中,在应用程序的 oncreate 方法中创建的内容有一个 SharedPreferences 和一个 SharePreferences.Editor 变量。我在保存和加载方法中使用它们。
public void saveFeedback(FeedbackItem feedbackItem) {
checkSp();
Set<String> feedbackSet = getFeedbacksSet();
if(feedbackSet == null){
feedbackSet = new HashSet<String>();
}
JSONObject json = createJSONObjectfromFeedback(feedbackItem);
feedbackSet.add(json.toString());
ed.putStringSet(CoreSetup.KEY_FEEDBACK, feedbackSet);
ed.commit();
}
public Set<String> getFeedbacksSet(){
checkSp();
Set<String> ret = sp.getStringSet(CoreSetup.KEY_FEEDBACK, null);
return ret;
}
private void checkSp(){
if(this.sp == null)
this.sp = applicationContext.getSharedPreferences(applicationContext.getPackageName(), Context.MODE_PRIVATE);
if(this.ed == null)
this.ed = this.sp.edit();
}
我只是不明白这是怎么发生的,在应用程序运行时完美地存储所有项目,然后在重新启动后并非所有项目都在集合中。而且我认为,如果所有项目都被移除,那么它可能比一些项目消失更容易接受,而一个项目仍然存在。有解释吗?