前言
在WanAndroid上看到每日一问 Parcelable 为什么效率高于 Serializable ?这篇文章,虽然知道Parcelable
比Serializable
效率高,但是一直不知道原因。这里总结一下。
相同点
Parcelable
和Serializable
都是用于数据传输(多用于应用内传输),特别是在Android
组件之间传输时,非常常用。
不同点
1. API不同
Serializable
是Java API
,而Parcelable
是Android API
,所以通常Serializable
更通用些
2. 目的不同
Serializable
其实是进行Java
对象序列化的,可以持久化,甚至在不同应用中传输,而Android
为了解决对象传输效率的问题开发的,用于组件之间传输数据。
3. 效率不同
Serializable
使用的是反射机制,在序列化过程中会产生很多冗余对象,触发GC
。
Parcelable
则是将对象中所有的内容分解成可支持、可传递的基础属性,而且这些属性完全保存在内存中,效率很快。
4. Parcelable的缺点
- 不能持久化
- 实现较为复杂
一句话总结
Serializable
是利用反射进行对象序列化,开发简单但开销大效率低
Parcelable
是将对象分解成基础属性,在内存中处理,高效但开发较为复杂
JSON
虽然在应用程序中传递数据,一般都是使用对象,但是我个人认为JSON
也可以用来传递数据,在JSON
工具好用的今天,完全可以解决日常问题。
来源:https://www.cnblogs.com/liuzhongrong/p/12365171.html