如何在 SharedPreferences 中保存堆栈
How to save stacks in SharedPreferences
我有一些堆栈,想使用 SharedPreferences 来保存它们。只有基本的东西可以放在 SharedPreferences 中。是否有任何简单的方法来保存复杂/自定义数据结构?
使用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);
你可以用马库斯的答案。这是我在我的项目中所做的:
存储在共享首选项中:
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 放入shared prefs 中,在检索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();
我有一些堆栈,想使用 SharedPreferences 来保存它们。只有基本的东西可以放在 SharedPreferences 中。是否有任何简单的方法来保存复杂/自定义数据结构?
使用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);
你可以用马库斯的答案。这是我在我的项目中所做的:
存储在共享首选项中:
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 放入shared prefs 中,在检索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();