一、Parcelable的基本介绍

Parcelable是Android为我们提供的序列化接口。一个类只要实现了这个接口,这个类的对象就可以实现序列化。可用于IPC/Binder,Activity之间的对象的传递。

二、Parcelable的基本使用

1、创建一个类实现Parcelable接口

2、实现接口中的describeContents()和writeToParcel(Parcel dest, int flags)方法

3、在类的实现中必须包含一个非空的静态实现了Parcelable.Creator接口的CREATOR。

示例如下:

public class User implements Parcelable {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}
//此处读的顺序要和 writeToParcel(Parcel dest, int flags)的写入顺序保持一致,否则会导致读取的数据出错private User(Parcel in) {name = in.readString();age = in.readInt();}@Overridepublic int describeContents() {return 0;}@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(name);dest.writeInt(age);}public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>() {@Overridepublic User createFromParcel(Parcel source) {return new User(source);}@Overridepublic User[] newArray(int size) {return new User[size];}};
}

三、Parcelable中方法的介绍

1、describeContents()

返回当前对象的内容描述。返回值为0或者CONTENTS_FILE_DESCRIPTOR(即1),如果writeToParcel(Parcel dest, int flags)的输出包含文件描述符,则返回1,否则返回0,几乎所有的情况之下都是返回0.

2、writeToParcel (Parcel dest, int flags)

将当前的对象写入序列化结构中,dest表示需要写入序列化的对象。flags有两种值0和PARCELABLE_WRITE_RETURN_VALUE(即1),几乎所有的情况下都是0.

3、createFromParcel(Parcel source)

返回Parcelable类的新实例。同Parcel的readXXX()方法来完成反序列化的过程。

4、newArray(int size)

创建Parcelable类的新数组。其中每个条目都初始化为空。供外部类反序列化本类数组使用。

注意:如果在该类的内部包含有里一个可序列化的对象,则该对象的的反序列化过程需要传递当前线程的上下文类加载器。否则会返回BadParcelableException错误。

Parcelable的使用相关推荐

  1. Serializable 都这么牛逼了,Parcelable 还要你何用?

    一些闲聊 距离上一篇文章似乎又是很久了,看起来也没有很多反馈,催更就更不用说了.哈哈,放弃了. 话说最近公司在招聘一批至少 5 年开发经验的 Android 开发工程师,我也是忙开了花,激动得不行呀. ...

  2. android开发之Parcelable使用详解

    想要在两个activity之间传递对象,那么这个对象必须序列化,android中序列化一个对象有两种方式,一种是实现Serializable接口,这个非常简单,只需要声明一下就可以了,不痛不痒.但是a ...

  3. java intent 传递集合对象_Intent之对象传递(Parcelable传递对象和对象集合)

    接着上一篇文章,以下我们讨论一下怎样利用Parcelable实现Intent之间对象的传递 一.实现对象传递 首先创建User.java实现Parcelable接口: package org.yayu ...

  4. Parcelable与Serializable的比较

    Parcel: Android中的序列化方式,可用于跨进程传输 Parcelable 进程间 如:想从一个第三方app拿进程回来 Serializable 进程内

  5. Android Parcelable的介绍与使用

    Parcelable使用的一个地方就是在进程间传递一个自定义的较为复杂的对象,对Parcelable学习了一下写下自己的观点. 将一个对象比如说一个名字为Cartoon的自定义类,由一个activit ...

  6. Android调用远程Service的参数和返回值都需要实现Parcelable接口

    import android.os.Parcel; import android.os.Parcelable; public class Person implements Parcelable{ p ...

  7. Android开发之Serializable 和 Parcelable的区别(源代码分享)

    android 中自定义的对象序列化的问题有两个选择一个是Parcelable,另外一个是Serializable. 一 序列化原因: 1.永久性保存对象,保存对象的字节序列到本地文件中: 2.通过序 ...

  8. Android中Parcelable接口用法

    --  通过writeToParcel将你的对象映射成Parcel对象,再通过createFromParcel将Parcel对象映射成你的对象.也可以将Parcel看成是一个流,通过writeToPa ...

  9. Android系统中Parcelable和Serializable的区别

    进行Android开发的时候,我们都知道不能将对象的引用传给Activities或者Fragments,我们需要将这些对象放到一个Intent或者Bundle里面,然后再传递. 通过Android的A ...

  10. Serializable And Parcelable

    Intent在不同的组件中传递对象数据的应用非常普遍.下面介绍两种通过Intent传递对象的方法. 1.实现Serializable接口 2.实现Parcelable接口 为什么要将对象序列化? 1. ...

最新文章

  1. python程序实例电话本-Python示例
  2. 分区式存储管理算法实现_穿梭式自动化立体库的种类和特点有哪些?
  3. Java之JSON数据
  4. matlab语法手册下载,MATLAB及其在理工课程中的应用指南 第4版.pdf
  5. 解决Mac上adb: command not found问题
  6. ux和ui_我怎么知道UI / UX是否适合我?
  7. 安卓案例:注册用户免启动时的广告页面
  8. python 用selenium自动启动百度并搜索关键词
  9. Django 输出二维码
  10. linux强制获得锁,Linux中的两种文件锁——协同锁与强制锁
  11. JavaScript高级程序设计(第3版).pdf
  12. WFP 样式(复习用)
  13. 上板子在线抓波发现app_rdy一直为低
  14. 为chrome浏览器单独设置代理服务器
  15. 小迪教程第三天——access注入片段
  16. STM32F4之按键(二)
  17. [小米]2015小米校招之回文数判断
  18. 【FPGA的基础快速入门26-----基于OV7725的以太网视频传输】
  19. mysql数字格式化千分号的问题,即每三位一个逗号
  20. java单引号替换_java中把某个字符串中的单引号替换成双引号

热门文章

  1. 【ArcGIS Pro微课1000例】0022:基于DEM进行流域分析生成流域图
  2. Malware Dev 01 - 免杀之 PPID Spoofing 原理解析
  3. Python绘制气象实用地图(附代码和测试数据) !
  4. 电子招投标须知的重要过程
  5. bs架构 mysql_什么是bs架构
  6. “熊猫视图”.Net图形控件功能介绍 [一]:简介与使用
  7. 端口映射snmp(端口161)破解网络尖兵
  8. 国人对国产操作系统的误会
  9. vmwaretools是灰色的 典型安装
  10. 金山词霸2005版词典文件对照表