Android SharedPreferences 本身不支持存储复杂对象。SharedPreferences 只能存储基本数据类型,如字符串、整数、布尔值和浮点数等。如果你需要存储复杂对象,你需要将它们转换为可以序列化的数据类型,例如 JSON 字符串。
要将复杂对象存储到 SharedPreferences,你可以将对象序列化为 JSON 字符串,然后将其存储在 SharedPreferences 中。当需要从 SharedPreferences 读取对象时,你可以将 JSON 字符串反序列化为对象。以下是使用 Gson 库进行序列化和反序列化的示例:
- 首先,添加 Gson 依赖项到你的项目的 build.gradle 文件中:
dependencies { implementation 'com.google.code.gson:gson:2.8.9' }
- 创建一个复杂对象类,例如 User:
public class User { private String name; private int age; // 构造函数、getter 和 setter 方法 }
- 将复杂对象序列化为 JSON 字符串并存储到 SharedPreferences:
User user = new User("John Doe", 30); Gson gson = new Gson(); String jsonUser = gson.toJson(user); SharedPreferences sharedPreferences = getSharedPreferences("MyPreferences", MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("user", jsonUser); editor.apply();
- 从 SharedPreferences 读取 JSON 字符串并将其反序列化为对象:
SharedPreferences sharedPreferences = getSharedPreferences("MyPreferences", MODE_PRIVATE); String jsonUser = sharedPreferences.getString("user", ""); Gson gson = new Gson(); User user = gson.fromJson(jsonUser, User.class);
这样,你就可以在 SharedPreferences 中存储和读取复杂对象了。请注意,这种方法可能会导致性能问题,因为 JSON 序列化和反序列化需要额外的计算。对于大型对象或频繁读写操作,你可能需要考虑使用其他持久化存储方案,如 SQLite 数据库或 Room 数据库。