Я сохраняю набор строк в общих настройках, если я его прочитаю. Я начинаю другие действия, возвращаюсь и читаю снова, все в порядке. Если я закрою приложение и запустил его снова, я получаю набор, но только с одним элементом вместо 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();
}
Я просто не понимаю, как это могло случиться, чтобы хранить все элементы во время работы приложения, а затем после перезагрузки не все элементы находятся в наборе. И я думаю, что если все элементы будут удалены, это может быть более приемлемым, чем некоторые предметы, и один элемент все еще существует. Есть ли объяснение?