Android SharedPreferences 本身只能存儲基本的數(shù)據(jù)類型,如字符串、整數(shù)、布爾值等。它不能直接存儲復(fù)雜對象,如自定義類、列表、字典等。但是,你可以通過以下方法將復(fù)雜對象存儲到 SharedPreferences 中:
將復(fù)雜對象序列化為 JSON 字符串:在將復(fù)雜對象存儲到 SharedPreferences 之前,你需要將其轉(zhuǎn)換為一個 JSON 字符串??梢允褂弥T如 Gson、Jackson 等庫來實現(xiàn)這一目的。序列化后的 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();
當(dāng)需要從 SharedPreferences 中讀取復(fù)雜對象時,首先將 JSON 字符串反序列化為原始對象:
String json = sharedPreferences.getString("complexObjectKey", "");
Gson gson = new Gson();
ComplexObject complexObject = gson.fromJson(json, ComplexObject.class);
使用自定義的類加載器:這種方法適用于在應(yīng)用程序中多次使用相同類型的復(fù)雜對象。首先,創(chuàng)建一個自定義的類加載器,用于從 SharedPreferences 中讀取對象的字節(jié)數(shù)據(jù)并將其反序列化為對象實例。然后,使用此自定義類加載器從 SharedPreferences 中讀取復(fù)雜對象。
請注意,這些方法可能會導(dǎo)致性能問題,因為 JSON 字符串和反序列化過程可能會消耗較多的資源。在存儲和讀取大量復(fù)雜對象時,可能需要考慮其他持久化存儲解決方案,如 SQLite 數(shù)據(jù)庫或文件存儲。