2012-01-17 12 views
10

我需要在Sqlite中存儲對象內容。 我想知道哪種方法可以通過對象序列化或使用Parcelable來完成。Android在SQLite中存儲可分析對象

可以將它作爲Parcelable存儲嗎?我該怎麼做?

+0

你真的需要保持在sqlite的數據不會更好地保存在一個文件夾? – ademar111190 2012-01-17 15:01:36

回答

32

歡迎您將您的對象轉換爲某種持久數據結構(XML,JSON,Serializable)並將其填充到某個數據庫列中。請記住,您仍然需要處理兼容性問題(例如,您的應用的版本2會更改一個類,現在需要處理版本1和版本2的結構)。還要記住,走這條路線,你會失去很多數據庫功能(例如,查詢對象中的某些東西)。

如果不需要SQLite,也歡迎您嘗試對象數據庫或CouchDb,或將持久數據結構存儲到文件中。

什麼肯定不能可靠地工作是將Parcelable倒入Parcel並嘗試存儲Parcel。 A Parcel僅供IPC使用,不適用於持久保存。這是ParcelableSerializable更快的原因之一。

+0

像往常一樣,最完美的答案:)無論如何,我不知道Serializable是否可以向後兼容。我認爲我會嘗試用JSON存儲數據並進行某種壓縮:) – StErMi 2012-01-17 20:27:33

+1

@StErMi:是的,如果我要走這條路,我個人會使用JSON或XML,除非某些數據不可能變成文字。當你真的可以讀取數據時,調試更容易,而不是一個神祕的一團糟。 – CommonsWare 2012-01-17 20:50:25

+0

你完全正確:)我會試一試:) – StErMi 2012-01-18 11:01:08

3

如果您需要堅持數據,請使用SerializableParcelable是爲了IPC的使用。它是一種二進制格式,不建議用於持久性。