一、什么是Parcelable?

android提供了一种新的类型:Parcel。本类被用作封装数据的容器,特别是在进程与进程间通信的时候,为了传递某些特定的数据,在传输数据的时候,需要对数据进行序列化,可以通过Parcelable将数据封装成序列化数据,封装后的数据可以通过Intent或IPC传递。实现Parcelable就是为了进行序列化,那么,为什么要序列化?

1)永久性保存对象,保存对象的字节序列到本地文件中;

2)通过序列化对象在网络中传递对象;

3)通过序列化在进程间传递对象。

二、Parcelable的实现

在Android中,实现序列化有两种选择,一种是实现Serializable接口,这个是原本Java就支持的;另外一种是实现Parcelable接口,这个是Android中的特有功能,效率比实现Serializable更为高效,两者都可用于Intent的数据传递,也可以用于进程间通信。实现Parcelable接口会比实现Serializable接口比较复杂,但是传输效率会更为高效,在Android中推荐使用实现Parcelable接口提高应用的性能。在实现Parcelable接口的时候,需要实现接口一些方法,跟实现Serializable接口只需声明一下即可的方式有一定的差异。以下是实现Parcelable接口的步骤:

1、首先要重写writeToParcel方法,将类的数据写入外部提供的Parcel中,将需要的数据打包到Parcel中保存,当使用的时候,从Parcel容器获取数据获取数据。

3)重写describeContents方法,内容接口描述,默认返回0就可以

4)实例化静态内部对象CREATOR实现接口Parcelable.Creator

注:Android中Intent传递对象有两种方法:一是Bundle.putSerializable(Key,Object),另一种是Bundle.putParcelable(Key,Object)。当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口。除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。

三、选择序列化方法的原则

1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable。

2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC。

3)Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelable不能很好的保证数据的持续性在外界有变化的情况下。尽管Serializable效率低点,但此时还是建议使用Serializable 。




更多相关文章

  1. Android(安卓)NFC开发-实践篇
  2. Android(安卓)SharedPreferences用法及程序共享机制
  3. [置顶] Android中window,view,Activity的关系
  4. Firemonkey扩展增强:Android(安卓)浏览器支持Input file标签上传
  5. Android知识梳理之Sqlite数据库的使用和优化
  6. android 监听网络状态的变化及实战
  7. Android之RxJava(一)
  8. 【笔记】【从Android(安卓)Guide温习Android(安卓)三】意图 (Int
  9. Android(安卓)进阶——持久化存储序列化方案Serializable和IPC及

随机推荐

  1. MySql 5.7.17免安装配置教程详解
  2. 解决Mysql5.7.17在windows下安装启动时提
  3. 在win10系统下安装Mysql 5.7.17图文教程
  4. mysql表名忽略大小写配置方法详解
  5. mysql 5.7.17 安装教程 附MySQL服务无法
  6. Mysql占用过高CPU时的优化手段(必看)
  7. Window 下安装Mysql5.7.17 及设置编码为u
  8. mysql连接数设置操作方法(Too many conne
  9. 详解MySql的慢查询分析及开启慢查询日志
  10. MySql登陆密码忘记及忘记密码的解决方案