我需要保存一組複雜的preferences
,本質上和HashMap
包含其他hashmaps
的數組作爲其鍵的值。將複雜結構保存爲共享首選項
如何將其保存到preferences
,或者我應該以另一種方式保存preferences
?我應該爲首選項創建一個對象並將其序列化爲一個文件?如果是這樣,請怎麼做?
我需要保存一組複雜的preferences
,本質上和HashMap
包含其他hashmaps
的數組作爲其鍵的值。將複雜結構保存爲共享首選項
如何將其保存到preferences
,或者我應該以另一種方式保存preferences
?我應該爲首選項創建一個對象並將其序列化爲一個文件?如果是這樣,請怎麼做?
SharedPreferences只將鍵值存儲在鍵/值對中。因此,我不認爲這是存儲HashMap
的Array
s的HashMap
s的最佳方式 - 也就是說,除非數據可以按照有意義的方式展平(如果您使用的是多個HashMap
那麼這些數據真的是關鍵值對嗎?是否有辦法將這些數據存儲爲常規鍵值對?)。
如果數據結構真的很複雜,則需要查看其他存儲選項。根據長度的不同,我可能會使用SQLite
數據庫。它很容易設置,可以在應用程序的任何位置訪問,像存儲的偏好一樣持久,速度也很快。
如果你有一個複雜的數據結構,並且你想將它存儲在共享的首選項中,那麼你可以考慮爲你的對象創建一個to_json()方法。 然後當然是一個from_json(String json)方法。
我不推薦這種方法。序列化複雜結構時,Android的內置json庫會中斷。最好的方法是使用Serialization接口將一個類實例序列化爲文件。 – RunLoop