Android序列化之Parcel

本文探讨Android中实现序列化的方式,包括Serializable和Parcelable。Parcelable性能优于Serializable,适合内存中使用,如Activity间传递。而Serializable适用于持久化操作。Android进程间通信依赖于序列化,Parcel作为IPC的数据容器,高效传输数据,包括基本类型、序列化后的复杂类型和IBinder对象。然而,Parcel不适合作为持久化存储机制。
摘要由CSDN通过智能技术生成

Android操作系统的底层数据传输形式是简单的字节序列形式进行传递。用通俗的话说就是系统不认识对象,只认识字节序列。而我们为了达到通信或者存储的目的,需要先将数据序列化传递,要使用时再进行反序列化还原。

Android中有2种方式可以实现序列化和反序列化:

  1. Serializable:Java自带的接口,实现该接口就可以将对象序列化。
  2. Parcelable:Android独有的接口,性能优于Serializable。原理是将一个完整的对象进行分解(拍扁),分解后的每一部分都是Intent所支持的数据类型。
二者区别是什么呢?
  • Serializable使用IO读写将序列化对象存储在硬盘上,读写速度慢;序列化过程中使用了反射技术所以会产生很多临时对象,占用空间大。但是它的优点是编码方便,开发者只需要实现Serializeable,对象就拥有了序列化和反序列化能力。
  • Parcelable是直接再内存中进行读写,内存读写速度优于硬盘读写,所以这种方式的性能比Serializable高,缺点是编码比Serializable方式更麻烦。
使用选择
  • 如果仅仅是在内存中使用,比如Activity、Service间传递信息,那强烈建议使用Parcelable,因为Parcelable比Serializable性能高,并且Serializable在序列化时会产生大量临时变量从而引起频繁GC。
  • 如果是持久化操作,推荐使用Serializable,虽然效率比较低但是因为再外界有变化的情况下,Parcelable不能很好的保存数据
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值