如何在SharedPreferences中保存堆栈

时间:2015-03-22 18:16:30

标签: android android-activity bundle

我有一些堆栈并希望使用SharedPreferences保留它们。 SharedPreferences中只有基本的东西可供使用。有没有简单的方法来保存复杂/自定义数据结构?

2 个答案:

答案 0 :(得分:3)

使用Gson,您可以轻松地将自定义对象保存到SharedPreferences

保存:

 Editor prefsEditor = mPrefs.edit();
 Gson gson = new Gson();
 String json = gson.toJson("MyObject");
 prefsEditor.putString("MyObject", json);
 prefsEditor.commit();

负载:

Gson gson = new Gson();
String json = mPrefs.getString("MyObject", "");
MyObject obj = gson.fromJson(json, MyObject.class);

答案 1 :(得分:2)

你可以和马库斯一起回答。这是我在项目中所做的:

存储在共享首选项中:

       SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
        SharedPreferences.Editor edit = prefs.edit();

        Gson gson = new Gson();
          String json = gson.toJson(MyImages);
          edit.putString("MyImages", json);

从共享首页中退出:

     Gson gson = new Gson();
     String json = PreferenceManager.getDefaultSharedPreferences(getActivity()).getString("MyImages", "");
     ArrayList<String> MyImages= new ArrayList<String>();
     MyImages=gson.fromJson(json, ArrayList.class);

这样你也不会失去你的数据结构(如果它是按某种顺序)。

如果将Map直接放入共享首选项,则在检索Map时将丢失数据的顺序。对我而言,序列很重要,gson + Arraylist工作得很好。

另一种方法是不使用SharedPrefs并将数据存储在文件(内部存储器)中:

File file = new File(getDir("data", MODE_PRIVATE), "map");    
ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(file));
outputStream.writeObject(map);
outputStream.flush();
outputStream.close();