进程间数据传递载体——Parcel(一)
来源:互联网 发布:淘宝明星zero距离签名 编辑:程序博客网 时间:2024/05/17 23:46
前段时间参与一个项目关于进程间通信,看人家的代码中Parcel用的各种6,可是咱看不懂呀!所以只好在查些资料咯!
所谓Parcel英文直译就是“打包”的意思。如果进程间通信直接传递引用对象,这样也只是传递了对象的内存地址,这样的行为是
行不通的,毕竟两个进程间的虚拟内存是不同的。但是我通过Parcel将内存地址中存储的数据打包呢。。这样就可以把数据传递过去了!
下面介绍下Parcel相关的方法:
dataSize();获取当前已经存储的数据大小。
setDataCapacity(int size);设置Parcel的空间大小,显然存储的数据不能大于这个值。
setDataPosition(int pos);改变Parcel中的读写位置,必须介于0和dataSize()之间。
dataAvail():当前Parcel中的可读数据大小。
dataCapacity():当前Parcel的存储能力。
dataPosition():数据当前位置值,类似游标。
Primitives
原始类型数据的读写操作:
writeByte(byte):写入一个byte;
readByte():读取一个byte;
writeDouble(double) :写入一个double
readDouble();读取一个double.
从上面看出读写是配套的。数据是按照host cpu的字节序来读写的
Primitives Arrays
原始数据类型数组的读写操作通常是先写入用4个字节表示的数据大小值,接着才写入数据本身。另外,用户既可以选择将数据读入现有的数组空间中,也可以让Parcel返回一个新的数组。
writeBoolenArray(boolean[ ] ):写入布尔数组。
readBooleanArray(boolean[ ]):读入布尔数组。
boolean[ ] createBooleanArray():读取并返回一个布尔数组。’
writeByteArray(byte[ ]):写入字节数组。
writeByteArray(byte[ ],int ,int):和上面几个不同的是,这个函数最后面的两个参数分别是表示数组中需要被写入的数据起点以及需要写入多少。
readByteArray(byte[ ]):读取字节数组。
byte[ ] createByteArray():读取并返回一个数组
***** 如果写入数据的时候系统发现已经超出了Parcel的存储能力,它会自动申请所需的内存控件,并扩展dataCapacity;并且每次写入都是从dataPosition()开始的。
- 进程间数据传递载体——Parcel(一)
- 进程间数据传递载体——Parcel(二)
- Android进程间通信系列-----------进程间的数据传递载体Parcel
- Android Binder 分析——数据传递者(Parcel)
- Android进程间通信(一):使用Parcel对象完成进程间通信
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent等)
- android 数据传递详解(Serialization、Parcelable、Parcel、Intent、Bundle)
- 用parcel解决intent传递大数据
- Android消息机制源码解析(一)——消息的载体Message
- .Net单元测试(二)——XML数据载体的优势与实际应用
- .Net单元测试(三) —— XML数据载体在项目中的应用
- 进程间传递数据
- 进程间传递数据
- 数据载体
- ios 开发笔记和技巧总结 (六)
- freescale opencl hello world
- angularjs之ui-bootstrap和ui-router结合使用
- Quartz和Spring,Mybatis结合,读数据库空指针(NullPointerException)
- OpenGLES: uniform变量传参
- 进程间数据传递载体——Parcel(一)
- 双向BFS搜索和A*算法
- IOS编译警告之:performSelector may cause a leak because its selector is unknown
- 民间版知乎用户分析报告
- android launcher创建删除判断是否存在快捷方式
- UI基本知识
- web项目启动完成执行某个方法
- spring mvc test by mock
- online_judge_1011