2016-04-23 141 views
6

我知道我的问题有一些答案,但答案不是非常详细或切实。 在我的程序中,为了将数据从一个活动传输到其他我将POJO类的内容转换为普通字符串并传递(METHOD1)。Android意图传递可parcelable对象vs传递Json字符串

方法一

String jsonString = JacksonSingleton.getObjectMapper().writeValueAsString(object); 
bundle.putExtra(JSON_STRING_KEY, jsonString) 

方法2

bundle.putExtra(JSON_STRING_KEY, parcelableObject); 

我的问题是这两个方法仅在性能方面,优选我始终认为,制作类别可以parcelable或serializable是低效的。在方法1中,我不需要对POJO类进行任何更改。

+0

伙计们,请不要downvote甚至没有评论或回答它的问题.... – oathkeeper

+0

看看这里,http://www.stevenmarkford.com/passing-objects-between-android-activities/和在这里,https://bitbucket.org/afrishman/androidserializationtest。做出明智的选择。 –

+0

我不想比较可序列化和parcelable。我只是想检查传递一个普通字符串和一个parcelable对象之间的性能差异。 – oathkeeper

回答

9

尽管我讨厌回答我自己的问题,但我想我会讨论并分享我的观察结果,这些观察结果将在未来帮助他人。

将数据从一个活动传输到另一个活动可以通过在活动意图中传递Serializable或Parcelable对象来完成。 Android开发者网站推荐使用Parcelable接口来实现此目的(link)。

但是,我的问题是有关传递Parcelable对象和JSON字符串之间的效率比较。

为了测试这个,我使用了一个旧的和低端的Android设备。我通过在活动意图中发送大型可发布对象来启动一项活动。接下来,我使用活动意图中相同对象的JSON字符串启动了相同的活动。我观察到的是通过发送JSON字符串而不是Parcelable Object来启动活动时可观察到的显着延迟。

总之,即使我们传递JSON字符串,String对象也会实现Serializable。 Google建议使用Parcelable而不是Serializable对象。如果长度可以忽略不计,这通常是微不足道的。但是,如果是大量Json Strings的大量物体,效率肯定会受到影响。您可以参考performance benchmark of Parcelable vs Serializable

相关问题