Я пытался сохранить некоторые значения в ArrayList с помощью SharedPreferences с помощью следующего кода:
public static String jsonSavePracticeResult;
private SharedPreferences sharedPreferencesSaveResults = PreferenceManager.getDefaultSharedPreferences(this);
public void savePracticeResults(ArrayList<KeepPracticeResultsModel>
arrayListPracticeResult) {
Gson gson = new Gson();
jsonSavePracticeResult = gson.toJson(arrayListPracticeResult);
SharedPreferences.Editor editorSharedPreferencesSaveResults;
editorSharedPreferencesSaveResults =
sharedPreferencesSaveResults.edit();
editorSharedPreferencesSaveResults.clear();
editorSharedPreferencesSaveResults
.putString("donePracticeList",jsonSavePracticeResult);
editorSharedPreferencesSaveResults.apply();
}
После этого я получил значения с помощью следующего кода:
public ArrayList<KeepPracticeResultsModel> getSavedPracticeResults(){
jsonSavePracticeResult = sharedPreferencesSaveResults.getString("donePracticeList", jsonSavePracticeResult);
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<KeepPracticeResultsModel>>() {}.getType();
keepPracticeResultsModels = gson.fromJson(jsonSavePracticeResult, type);
return keepPracticeResultsModels;
}
Когда приложениеоткрыт, работает нормально, но когда вы пытаетесь закрыть приложение из последних приложений, и после этого вы снова открываете приложение, значения SharedPreferences теряются, а jsonSavePracticeResult имеет значение Null!Также я позвонил getSavedPracticeResults()
в onResume()
и onPause()
.
Я сделал все решения, которые существовали в StackOverflow, но это происходит снова!