积跬步至千里系列之五--Serializable和Parcelable的区别

本文介绍了Android应用中数据传输的两种常见方式:Serializable和Parcelable。详细对比了两者的用途、性能表现及适用场景,并提供了实现这两种接口的具体编码指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#前言#
Android开发中在不同的组件之间进行跳转通常通过Intent进行实现,这其中时常会携带一些额外数据。平时开发过程中,除了携带一些基本数据类型之外,还可以携带数据对象。常见的也是最常用的两种可携带对象形式,实现Serializable接口或实现Parcelable接口。
#Serializable和Parcelable的主要区别#
Serializable接口主要的作用就是保存对象的各个属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。
#性能优劣和使用情景#
Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化。多说一句,说到性能,想到了StringBuffer和StringBuild的区别,这也是面试中经常问到的一个问题。
#具体的编码实现和使用#
使用Serializable直接实现Serializable接口即可,程序会自动生成一个序列化ID,表示对当前对象进行序列化。如果是使用Parcelable,实现Parcelable接口后,还需要自己写一些方法的实现,具体来说就是:writeToParcel()、describeContents()、还有静态的CREATOR变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值