/** Restores content for consoleContent with the key prefKey. */ private void restoreConsole(List<String> consoleContent, String prefKey) { Logger.d("Service restoreConsole for " + prefKey); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); String savedConsole = prefs.getString(prefKey, null); if (savedConsole != null) { Type listType = new TypeToken<ArrayList<String>>() {}.getType(); ArrayList<String> items = MeasurementJsonConvertor.getGsonInstance().fromJson(savedConsole, listType); if (items != null) { Logger.d("Read " + items.size() + " items from prefkey " + prefKey); for (String item : items) { insertStringToConsole(consoleContent, item); } Logger.d("Restored " + consoleContent.size() + " entries to console " + prefKey); } } }
/** Persists the content of the console as a JSON string */ private void saveConsoleContent(List<String> consoleContent, String prefKey) { Logger.d("Service saveConsoleContent for key " + prefKey); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = prefs.edit(); int length = consoleContent.size(); Logger.d("Saving " + length + " entries to prefKey " + prefKey); ArrayList<String> items = new ArrayList<String>(); // Since we use insertToConsole later on to restore the content, we have to store them // in the reverse order to maintain the same look for (int i = length - 1; i >= 0; i--) { items.add(consoleContent.get(i)); } Type listType = new TypeToken<ArrayList<String>>() {}.getType(); editor.putString(prefKey, MeasurementJsonConvertor.getGsonInstance().toJson(items, listType)); editor.commit(); }