一人一猫旅行记之浅析序列化及原理

本文探讨了Java和Android中的序列化概念,重点关注Serializable和Parcelable的区别。Serializable效率较低,涉及反射和大量临时变量,适合数据存储或网络传输;而Parcelable效率高,适用于Android组件间数据传递,但不保证外部环境变化时的数据连续性。实现上,Serializable只需实现接口,Parcelable需手动编写序列化和反序列化方法。
摘要由CSDN通过智能技术生成

在Activity跳转的时候,往往需要传递一个对象。不像String等基本类型,可以直接通过Intent的putExtra方法将数据加到Bundle中,换句话说对象并不是计算机可以识别的类型。

这样的话就涉及到了一个概念,序列化。
什么是序列化呢?序列化就是将对象转成可以存储或者传递的形式的过程,反序列化也是一个相反的过程,也就是将序列化后的数据转换成对象的一个过程。

Java与安卓分别提供了一种序列化的方法(Serializable和Parcelable)
那么二有什么区别呢?
1,Serializable会涉及到反射,产生大量的临时变量,这会引起系统频繁的GC
2,Serializable由JDK完成转换,而Parcelable则是自己完成序列化和反序列化,这就导致前者的效率要远低于后者。安卓之所以设计Parcelable的初衷就是Serializable效率过慢,为了在组件之间或者不同APP之间提高数据的传输速度,才设计了Parcelable。
3,如果当数据要存储在磁盘而不是内存中,Parcelable无法保证在外部环境发生变化时的连续性。
因此,在Android的组件或者APP之间传递数据,选择Parcelable。如果想要保存数据或者在网络上传输则选择Serializable。

二者在使用上也有很大的区别:
首先,对于Serializable来说使用非常简单,只需要让对象实现Serializable接口即可
在这里插入图片描述
我们可以看到Serializable这个接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值