Android Parcelable 与 SQLite

Android Parcelable vs SQLite

使用 Parcelable 或使用 SQLite 通过 Activity 发送数据是否更便宜?我正在使用 SQLite(通过 Content Provider)来保存我的数据。所以实际上我总是可以通过 SQLite 访问我的数据。但是我不确定我是否应该使用 Parcelable 跨 Activity 发送数据,或者我应该每次都抓取它们。

详情。假设我有一个 Village 对象。因此,Village 自然是比较大的:例如,它包含人物列表,而列表又可能包含衣服列表。在每个 activity 的 onPause 中,我将 Village 坚持到我的内容提供商。但有时我想将一个 Activity 的 Village 对象发送到另一个。我有两个选择:我可以将dbId发送到下一个activity然后查询URI(然后将游标转换为POJO),或者我可以发送一个Village的Parcelable。哪个更贵?

说 Parcelable 更便宜(我还不知道)。现在我正在努力让 Parcelable 工作。让 Parcelable 工作值得付出努力吗?

如果您的对象可以很大,那么通过 ContentProvider 访问是可行的方法。您不仅会避免 marshalling/unmarshalling 时间和代码,而且 Parcelablelimited to 1MB

The Binder transaction buffer has a limited fixed size, currently 1Mb, which is shared by all transactions in progress for the process.