Android序列化之Serial库

Serial是一个由Twitter推出的高性能序列化库,对比Serializable和Parcelable,Serial在性能上有显著优势,序列化速度提升5倍,反序列化提升2.5倍,且数据量仅为传统方式的1/5。其提供了更强的控制力和调试能力,允许开发者自定义序列化过程。使用Serial需要添加特定依赖,并定义SERIALIZER静态变量来指定对象的序列化和反序列化方式。
摘要由CSDN通过智能技术生成

什么是Serial

Serial是由Twitter高性能序列化方案,它力求帮助开发者实现高性能和高可控的序列化过程。
GitHub:https://github.com/twitter/Serial/blob/master/README-CHINESE.rst/

Serializable与Parcelable的优劣

Serializable

Java原生的序列化机制,在Android源码中也广泛使用。具体使用方案在这里不进行过多说明。Serializable在序列化过程中大量使用反射技术以及申请临时变量,因此序列化性能会比较差,另一方面,序列化后的文件信息非常多,影响IO读写性能。但是Serializable使用起来非常简单,除此之外,可以通过readObject和writeObject进行自定义序列化,例如实现加密。

Parcelable

由于Java原生序列化机制性能很低,因此Google提供了一个更加轻量高效的方案Parcelable。Parcelable性能非常优秀,Parcelable不需要采用反射的方式去实现序列化和反序列化,但换来的代价是需要对写入和读取手动添加代码,因此实现复杂。除此之外,还要考虑系统版本的兼容性和数据前后的兼容性。厂商或者Android版本的更新如果对Parcel进行修改可能导致问题,除此之外,Parcelable并没有Serializable一样优秀的版本管理,因此带来很大的维护成本。对于需要持久化存储,更偏向使用Java原生的Serializable。

Serial的优点

  1. 相比起传统的反射序列化方案更加高效(没有使用反射),性能相比传统方案提升了3倍(序列化的速度提升了5倍,反序列化提升了2.5倍),序列化生成的数据量大约是之前的1/5。
  2. 开发者对于序列化过程的控制较强,可定义哪些object、field需要被序列化。
  3. 有很强的debug能力,可以调试序列化的过程。

Serial的使用

依赖

从Maven Central上下载最新的依赖:

repositories {
  mavenCentral()
}

dependencies {
  compile 'com.twitter.serial:serial:0.1.6'
}

使用

  1. 定义一个需要序列化的类,序列化类必须包含的信息有一个SERIALIZER的静态变量,通过它对对象进行序列化和反序列化。这个SERIALIZER是继承 ObjectSerializer的类的实例对象,它重载了两个抽象函数,serializeObject和deserializeObject,实际通过这两个函数定义对象如何序列化和反序列化的。
public class People {
   

    // 需要单独定义一个序列化操作相关的变量
    public sta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值