Skip to content

Instantly share code, notes, and snippets.

@yuraj11
Last active October 10, 2016 11:00
Show Gist options
  • Save yuraj11/b0a3174a82070bf8a9fc to your computer and use it in GitHub Desktop.
Save yuraj11/b0a3174a82070bf8a9fc to your computer and use it in GitHub Desktop.
SharedPrefences json object (and simple caching)
class PrefsJsonHeper {
private final HashMap<String, Object> mJsonObjectCache = new HashMap<>();
private final SharedPreferences mPreferences;
private final Gson mGson;
public PrefsJsonHeper(@NonNull SharedPreferences preferences, @NonNull Gson gson) {
mPreferences = preferences;
mGson = gson;
}
/**
* Load and deserialize saved object from settings (or from hashmap cache).
*/
public <T extends Serializable> T loadSettingObject(@NonNull String name, @NonNull Class<T> classType) {
Object obj = mJsonObjectCache.get(name);
if (obj != null) {
return classType.cast(obj);
} else {
String json = mPreferences.getString(name, null);
if (json != null) {
return classType.cast(mGson.fromJson(json, classType));
} else {
return null;
}
}
}
/**
* Save object (and serialize to json) in settings (and put to hashmap cache).
*/
public <T extends Serializable> void saveSettingObject(@NonNull String name, @NonNull T object) {
mJsonObjectCache.put(name, object);
mPreferences.edit().putString(name, mGson.toJson(object)).apply();
}
/**
* Remove object from settings (and cache).
*/
public void removeSettingObject(@NonNull String name) {
mJsonObjectCache.remove(name);
mPreferences.edit().remove(name).apply();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment