2016-01-22 69 views
1

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

详情。说我有一个村庄的对象。因此,村庄自然是比较大的:它包含人物列表,例如可能包含衣服列表。在每次活动的开始之前,我坚持将Village留给我的内容提供商。但有时我想将一个Village对象从一个Activity发送到另一个。我有两种选择:我可以将dbId发送到下一个活动,然后查询URI(然后将光标转换为POJO),或者我可以发送Village的Parcelable。哪个更贵?

说说可以更便宜的(我还不知道)。现在我正在努力让Parcelable工作。值得让Parcelable工作的努力是什么?

回答

2

如果你的对象可能很大,那么通过ContentProvider访问是一条可行的路。您不仅可以避免编组/解组时间&代码,但Parcelable s是limited to 1MB

活页夹事务缓冲区具有有限的固定大小,当前为1Mb,由进程中正在进行的所有事务共享。

+0

感谢您的回复。但我不是那个意思。如果有的话,大概是0.4MB。所以不断查询数据库比连续转换Parcel更便宜。我应该说,每次我查询我将光标转换为POJO。这很重要吗? –

+0

即使在0.4MB的时候,我也不建议通过一个Parcel传递它......这个过程中的所有事务都是1MB,所以潜在的可能是其他消息正在占用大量内存。 – Buddy