如何永久存储parcelable自定义对象?

Mic*_*ith 7 android parcelable android-intent

我想永久存储一个自定义对象(让我们称之为MyObject),这样如果它从内存中删除,我可以在应用程序再次启动时在我的Activity/ Fragment onResume()方法中重新加载它.

我怎样才能做到这一点?SharedPreferences似乎没有一种存储parcelable对象的方法.

inv*_*igo 23

如果需要将其存储在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 {

}
Run Code Online (Sandbox Code Playgroud)