在Android中将一个Parcelable对象存储到SQLite数据库中

12

我需要将一个对象内容存储在Sqlite中。我想知道使用对象序列化还是Parcelable进行存储哪种方式最好。

是否可以将其存储为Parcelable?如何操作?


你真的需要将数据保存在SQLite中吗?把它保存在文件夹里不是更好吗? - ademar111190
2个回答

35

欢迎您将对象转换为某种可持久化的数据结构(XML、JSON、Serializable),并将其存储在某个数据库列中。请注意,您仍然需要处理兼容性问题(例如,应用程序的版本2更改了一个类,现在需要处理版本1和版本2的结构)。请记住,这样做会丧失许多数据库功能(例如,在对象中查询某些内容)。

您也可以尝试使用对象数据库、CouchDb或将可持久化的数据结构存储到文件中,如果SQLite不是必需的。

绝对不可靠的方法是将 Parcelable 转换为 Parcel 并尝试存储 ParcelParcel 仅用于IPC,而不是设计用于持久化。这也是为什么 ParcelableSerializable 更快的原因之一。


一如既往,完美的答案 :) 不过我不知道 Serializable 在向后兼容方面有多可扩展。我想我会尝试使用某种压缩方式将数据存储在 JSON 中 :) - StErMi
1
@StErMi:是的,如果我走这条路线,我个人会使用JSON,或者也许XML,除非一些数据不可能转换为文本。当你能够实际阅读数据而不是它成为一个加密的块时,调试会更容易得多。 - CommonsWare

3
如果需要持久化数据,请使用Serializable。而Parcelable则用于进程间通信,它是一种二进制格式,不建议用于持久化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接