gpt4 book ai didi

Android Intent 传递 parcelable 对象与传递 Json 字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:07 33 4
gpt4 key购买 nike

我知道我的问题有一些答案,但答案不是很详尽或令人信服。在我的程序中,为了将数据从一个 Activity 传输到另一个 Activity ,我将 POJO 类的内容转换为 Json 字符串并通过包(方法 1)传递。

方法一

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

在方法 2 中,我在包中传递一个 Parcelable 对象。

方法2

bundle.putExtra(KEY_STR, parcelableObject);

如果我要实现方法 2,我将必须实现 Parcelable 接口(interface)并编写自定义代码来编码和解码我的 POJO 类字段。

我的问题是,就性能而言,这些方法中哪种更好/推荐?方法 1 非常方便,但我想遵循最佳实践。

最佳答案

编辑:如果你讨厌像我一样编写“Parcelable”样板代码,你可以使用 Parcelable code generator使用 Android Studio/IntelliJ IDE 插件。它将自动生成编码和解码类字段的方法。非常易于使用,强烈推荐。


尽管我很讨厌回答自己的问题,但我想分享我的观察结果,以在未来帮助其他开发者。

将数据从一个 Activity 传输到另一个 Activity 可以使用在 Activity Intent 中传递可序列化或可打包对象来完成。安卓开发者网站推荐使用Parcelable interface for this purpose .

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

为了对此进行测试,我使用了一台旧的低端 Android 设备。我通过在 Activity Intent 中发送一个大的 Parcelable 对象来启动一个 Activity 。接下来,我在 Activity Intent 中使用同一对象的 JSON 字符串启动了同一 Activity 。我观察到的是在通过发送 JSON 字符串而不是 Parcelable 对象启动 Activity 时出现明显的可观察延迟。

总而言之,即使我们传递一个 JSON 字符串,Java String object always implements Serializable . Google 建议使用 Parcelable 而不是 Serializable 对象。如果字符串的长度可以忽略不计,这通常是微不足道的。但是,对于海量对象的海量Json String,效率肯定会有所下降。

您可以引用此 performance benchmark of Parcelable vs Serializable .


TLDR:

  • Parcelable - 更多样板代码、更好的性能和更好的整体工程实践。

  • Serializable - 代码更少,易于学习,如果您不执着于性能/最佳实践,则可以接受。

关于Android Intent 传递 parcelable 对象与传递 Json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36807247/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com