2012-01-17 77 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的使用。它是一种二进制格式,不建议用于持久性。