Android SharedPreferences 本身只能存储基本的数据类型,如字符串、整数、布尔值等。它不能直接存储复杂对象,如自定义类、列表、字典等。但是,你可以通过以下方法将复杂对象存储到 SharedPreferences 中:
-
将复杂对象序列化为 JSON 字符串:在将复杂对象存储到 SharedPreferences 之前,你需要将其转换为一个 JSON 字符串。可以使用诸如 Gson、Jackson 等库来实现这一目的。序列化后的 JSON 字符串可以存储在 SharedPreferences 中。
例如,使用 Gson 库将自定义对象序列化为 JSON 字符串:
Gson gson = new Gson(); String json = gson.toJson(complexObject); SharedPreferences sharedPreferences = getSharedPreferences("YourSharedPreferencesName", MODE_PRIVATE); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("complexObjectKey", json); editor.apply();
当需要从 SharedPreferences 中读取复杂对象时,首先将 JSON 字符串反序列化为原始对象:
String json = sharedPreferences.getString("complexObjectKey", ""); Gson gson = new Gson(); ComplexObject complexObject = gson.fromJson(json, ComplexObject.class);
-
使用自定义的类加载器:这种方法适用于在应用程序中多次使用相同类型的复杂对象。首先,创建一个自定义的类加载器,用于从 SharedPreferences 中读取对象的字节数据并将其反序列化为对象实例。然后,使用此自定义类加载器从 SharedPreferences 中读取复杂对象。
请注意,这些方法可能会导致性能问题,因为 JSON 字符串和反序列化过程可能会消耗较多的资源。在存储和读取大量复杂对象时,可能需要考虑其他持久化存储解决方案,如 SQLite 数据库或文件存储。