Serializable和Parcelable的区别和选择

写博客,据前辈们说是一种很有效的提升自我技术的手段。一方面可以在忘记的时候,起到笔记的作用,一方面写出自己的体会和启发。坚持每周至少一篇,相信自己一定可以坚持下来!第一篇,就从基础开始写起。

Serializable和Parcelable,两个序列化接口。之前在项目中有碰到Activity的通信问题,需要往购物车中传递一个商品的集合。Activity之间的通信方式,无非这几种:Bundle 、公有的静态变量、网络、文件。第一时间想到使用Bundle,比较方便。可是试来试去,好像怎么都不行。我知道基本类型数据是没问题的,对象类型数据需要实现序列化接口。最后还是没能成功。。转而使用static 修饰的list,可是总感觉这样不好。今天决定好好研究一下这个问题,最后通过实现Serializable搞定了。说来可笑,看代码: 


当时就是少了强转这一步。。。在另一个接收数据的Activity


再强转回来,然后就OK了。

然后我依稀记得Serializable是重量级的,在内存消耗上更严重一些,于是打算再使用Parcela接口实现。

看代码:

主要是Person类的变化较大。首先要实现两个方法

然后构建自定义的Parcelable对象。实现2个未实现方法。写法比较固定。


数据传递的代码:


获取数据:


总结一下

1、作用

Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在,Parcelable是通过IBinder通信的消息的载体。

从上面的设计上我们就可以看出优劣了。

2、效率及选择

Parcelable的性能比Serializable好,在内存开销方面较小,所以在内存间数据传输时推荐使用Parcelable,如activity间传输数据,而Serializable可将数据持久化方便保存,所以在需要保存或网络传输数据时选择Serializable,因为android不同版本Parcelable可能不同,所以不推荐使用Parcelable进行数据持久化

Serializable是java提供的,而Parcelable是Android专门为应用中数据的传递打造的,可想而知二者该如何选择。




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值