Android SharedPreferences 本身不支持存儲復雜對象。SharedPreferences 只能存儲基本數據類型,如字符串、整數、布爾值和浮點數等。如果你需要存儲復雜對象,你需要將它們轉換為可以序列化的數據類型,例如 JSON 字符串。
要將復雜對象存儲到 SharedPreferences,你可以將對象序列化為 JSON 字符串,然后將其存儲在 SharedPreferences 中。當需要從 SharedPreferences 讀取對象時,你可以將 JSON 字符串反序列化為對象。以下是使用 Gson 庫進行序列化和反序列化的示例:
dependencies {
implementation 'com.google.code.gson:gson:2.8.9'
}
public class User {
private String name;
private int age;
// 構造函數、getter 和 setter 方法
}
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 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 數據庫。