假设我的一个方法被传递了一个已经填充了要保存的数据的Bundle,有没有办法将它保存到SharedPreferences 而无需将其拆分为整数、浮点数、字符串等?
我更喜欢“一举”编写/提交所有内容的便利性,因此,如果使用SharedPreferences无法做到这一点,您会推荐哪些其他持久存储方法?
假设我的一个方法被传递了一个已经填充了要保存的数据的Bundle,有没有办法将它保存到SharedPreferences 而无需将其拆分为整数、浮点数、字符串等?
我更喜欢“一举”编写/提交所有内容的便利性,因此,如果使用SharedPreferences无法做到这一点,您会推荐哪些其他持久存储方法?
SharedPreferences 被序列化为 XML,这就是你只能使用简单类型的原因。您要么必须自己将包转换为单独的 SharePreferences 属性,要么以其他方式将包序列化到磁盘。
这是一个很好的参考文档,讨论了在 Android 中存储数据的各种可能性:http: //developer.android.com/guide/topics/data/data-storage.html
据我所知,您只能将原始数据(及其包装器)保存到 SharedPreferences
为什么不创建自己的辅助方法,该方法将遍历 Bundle 并将其中的所有值保存到 SharedPreferences?
我只是使用Gson
fromGoogle
将指定的对象序列化为其等效的 JSON 表示:
使用这个依赖
implementation 'com.google.code.gson:gson:2.8.6'
代码:
Gson gson = new Gson();
String dataToJson = gson.toJson(modelObj);
然后我dataToJson
在 SharedPreferences.Simple 中存储为字符串!
在字符串提取时:
String myStoredVal = Value stored in SharedPreference.
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
Gson gson = builder.create();
MyModel modelObj = gson.fromJson(prodDataStr, MyModel.class);