android - 如何永久存储可打包的自定义对象?

标签 android android-intent parcelable

<分区>

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

我该怎么做? SharedPreferences 似乎没有存储 parcelable 对象的方法。

最佳答案

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

}

关于android - 如何永久存储可打包的自定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839400/

相关文章:

android - FloatingActionButton 在 ViewPager 中不可见

java - 启用 ListView 中显示的号码的电话调用

android - 阻止来 self 的 android 应用程序的外出调用。

Android:将对象从一个 Activity 发送到另一 Activity

android - 继承人类的 getCreator 的 Parcelable 继承问题

android - @Parcelize 和枚举类 - 重载解析歧义

java - 如何动态 inflated layout ?

java - 单击 RecyclerView 项目时更新 ListView

Android 谷歌地图 V2 已停止

android - Android 中的自动滚动 TextView