Java—Android—Serializable—Parcelable

Java中,我们经常在序列化对象的时候都会使用Serializable,而Android也有自己序列化的东西,那就是Parcelable。


它们两者直接有什么相同点和不同点呢?我们使用的时候又该如何选择?

相同点:

都是序列化对象,目标都是对象的持久化或者方便对象的传输。


不同点:

1、实现不一样,Serializable只需要实现这个接口并且给一个序列化的ID就可以,而Parcelable不需要序列化ID,需要实现接口中的两个方法和添加一个静态的成员CREATOR。

2、Serializable不需要自己去实现序列化的代码,而Parcelable需要自己去实现序列化和反序列化的代码,当然,你用as的话会自动给你生成。


序列化的时候如何选择?

性能方面面,Parcelable比Serializable要好,内存开销比较小,Serialiable序列化的是会产生大量的临时变量,会引起频繁的gc,所以,在Android传出对象的时候使用Parcelable比较好,而当需要对一个对象进行保存的时候,使用Serializable比较好,因为Android不同的版本可能Parceliable可能不同,而且Parclable不能很好的保证在外界有变化的时候保持数据的持续性(这就是为什么Parcelable中的describeContents方法的返回值是0),所以,需要持久化对象的时候需要用到Serializable。



有关于序列化的还可以参考:

Android—序列化对象—Parcelable

Java—序列化—Serializable—Externalizable


2016-09-10-教师节

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值