Serializable和Parcelable的区别和选择
来源:互联网 发布:淘宝金币流量 编辑:程序博客网 时间:2024/05/18 18:01
写博客,据前辈们说是一种很有效的提升自我技术的手段。一方面可以在忘记的时候,起到笔记的作用,一方面写出自己的体会和启发。坚持每周至少一篇,相信自己一定可以坚持下来!第一篇,就从基础开始写起。
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专门为应用中数据的传递打造的,可想而知二者该如何选择。
- Serializable和Parcelable的区别和选择
- Serializable 和 Parcelable 的选择
- parcelable和serializable 的区别。
- Parcelable和Serializable的区别
- Parcelable和Serializable的区别:
- Parcelable和Serializable的区别
- Serializable和Parcelable的区别
- Parcelable和Serializable的区别
- Parcelable和Serializable的区别
- Parcelable和Serializable的区别?
- Serializable和Parcelable的区别
- Parcelable 和 Serializable 的区别
- Parcelable和Serializable的区别
- Parcelable和Serializable的区别
- Serializable和Parcelable的区别
- Parcelable和Serializable的区别
- Serializable和Parcelable的区别
- Serializable和Parcelable的区别
- string转化为int
- 记菜鸟的一次IBM笔试加两轮面试 2016实习
- Python Flask Web 第四课 —— 模板引擎Jinja2
- leetcode-java-7. Reverse Integer
- 12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用
- Serializable和Parcelable的区别和选择
- WebSocket实现即时聊天室
- Java多线程 之 Callable sleep yield 优先级(三)
- Unity解析XML
- 对于表现层的格式
- Windows性能监视器如何创建数据收集器?
- C++模板小例
- branch网站与客户端同步
- Android Intent demo