android - parcelable 值得实现以在 Activity 之间传递数据吗?

标签 android performance serialization parcelable

我想提高我的应用程序的性能。我想到的一件事是用 parcelable 替换所有可序列化的 intent-bundle 参数。

我找到了这个线程:Benefit of using Parcelable instead of serializing object

有人从一本书中说,parcelable 仅用于进程间通信?那可能不是最新的,对吧?因为至少从技术上讲,这是可能的。

然后还有 parcelable 不可靠的说法,因为实现因设备而异,这当然是一个致命的特性,因为我希望它始终工作,所有设备和 api,从 API 7 开始。

而且我还阅读了一些关于使用 Externalizable 或实现自定义协议(protocol)的建议……但我不明白,为什么 Parcelable 不可靠,为什么 Android 开发人员会围绕某些无法在所有设备上运行的东西进行讨论?还是评论不正确?

是否值得实现 Parcelable?我坚持使用 Serializable 吗?或者自定义序列化/外部化是正确的方法吗?

请不要告诉我“试一试”,我没时间做这个,专门检查Parcelable是否可靠(而且设备不够)...求经验...

谢谢。

附言也不要对我说“Serializable 在大多数情况下是可以接受的”我知道,它确实可以接受,但我有时间并且想将它与 Parcelable(或其他东西)一起使用,如果这可以改善用户体验的话。

最佳答案

Parcelable 始终在所有设备上工作。否则,什么 都不起作用。 Android 内部非常依赖于 Parcelable

Parcelable 会比 Serializable 更高效一些,但我严重怀疑它会对您的“用户体验”产生很大影响(当然,除非您是到处使用它并序列化非常大和复杂的对象)。

如果您认为自己遇到了性能问题,那么我会花时间分析应用程序并收集关于它在哪里花费时间的经验数据。恕我直言,将 Serializable 替换为 Parcelable 是一种相对较低级别的实现优化,可能会给您带来接近于零的可感知性能改进。

关于android - parcelable 值得实现以在 Activity 之间传递数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994001/

相关文章:

android - 更改编译器版本时出错 - 为什么会这样?

c++ - 具有静态成员实例的单例

c# - 使用接口(interface)序列化子集合

java - 包含 ArrayList 的反序列化对象具有所有空值

java - Tomcat 返回错误版本的文件

java - 如何在 Android 中渲染 PDF 文件

android - 应用程序未在 MainActivity 上登录,但在下一个 Activity 中登录。使用 BaseGameUtils 实现 Google Play 服务登录

android - 为什么我的 android 微调器在 TextView 中显示单选按钮?

java - 递归解析 JSON 对象 - Java

performance - SSE2 8x8 字节矩阵转置代码在 Haswell+ 上比在 Ivy 桥上慢两倍