前言
在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