カスタムオブジェクト(MyObject)を永続的に保存して、メモリから削除された場合、アプリケーションの再起動時にactivity/fragment onResume()メソッドでリロードできます。パーセル可能なカスタムオブジェクトを永続的に保存する方法は?
どうすればいいですか? SharedPreferencesは分解可能なオブジェクトを格納するためのメソッドを持っていないようです。
カスタムオブジェクト(MyObject)を永続的に保存して、メモリから削除された場合、アプリケーションの再起動時にactivity/fragment onResume()メソッドでリロードできます。パーセル可能なカスタムオブジェクトを永続的に保存する方法は?
どうすればいいですか? SharedPreferencesは分解可能なオブジェクトを格納するためのメソッドを持っていないようです。
SharedPreferencesに格納する必要がある場合は、オブジェクトをjson文字列に解析して文字列を格納できます。
private Context context;
private MyObject savedObject;
private static final String PREF_MY_OBJECT = "pref_my_object";
private SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
private Gson gson = new GsonBuilder().create();
public MyObject getMyObject() {
if (savedObject == null) {
String savedValue = prefs.getString(PREF_MY_OBJECT, "");
if (savedValue.equals("")) {
savedObject = null;
} else {
savedObject = gson.fromJson(savedValue, MyObject.class);
}
}
return savedObject;
}
public void setMyObject(MyObject obj) {
if (obj == null) {
prefs.edit().putString(PREF_MY_OBJECT, "").commit();
} else {
prefs.edit().putString(PREF_MY_OBJECT, gson.toJson(obj)).commit();
}
savedObject = obj;
}
class MyObject {
}
Bundle
をパーセルとしてディスクに書き込んでから、Parcel
を後で入手してParcel.readBundle()
メソッドを使用してBundle
を元に戻すことができます。
バンドルをパーセルとしてディスクに書き込む方法を教えてください。 –