没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
7页
1.背景 默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int、long、char、boolean 等); String字符串; CharSequence字符序列; List列表,List中的所有元素须是前面提到的数据类型,或者是Parcelable类型(这也是本文准备讲解的); Map,Map 中的所有元素必须是以上列表中支持的数据类型,或者您所声明的由 AIDL 生成的其他接口或Parcelable 类型; 如果想在进程间传递以上数据类型之外的对象该怎么办?这就需用到Parcelable接口,Parcelable意思是“可包裹的”,是Android系统可用的序列化
资源推荐
资源详情
资源评论
Android AIDL使用介绍(使用介绍(2)自定义数据类型的传递)自定义数据类型的传递
1.背景背景
默认情况下,AIDL只支持下列数据类型:
Java八种基础数据类型(如 int、long、char、boolean 等);
String字符串;
CharSequence字符序列;
List列表,List中的所有元素须是前面提到的数据类型,或者是Parcelable类型(这也是本文准备讲解的);
Map,Map 中的所有元素必须是以上列表中支持的数据类型,或者您所声明的由 AIDL 生成的其他接口或Parcelable 类型;
如果想在进程间传递以上数据类型之外的对象该怎么办?这就需用到Parcelable接口,Parcelable意思是“可包裹的”,是
Android系统可用的序列化接口的一种,另外一种是来自java的Serialable,和Parcelable相比,Serialable的使用较为简单,如
果只是保存数据到本地这类应用,使用Serialable即可,但在进程间通讯,则建议使用Parcelable。
2.序列化和反序列化序列化和反序列化
Parcelable是序列化接口,那么什么是序列化,为什么进程间传输自定义对象需要使用序列化?百度百科对序列化的定义如
下:
序列化是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储
区。之后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
数据在内存中是字节形态,数据分解到最后都是0和1字节流,这就像万物分解到最后都是原子一样,进程A要传递数据给进程
B,同样是以字节形式传递,对于基本数据类型,例如进程A传递int类型数据给进程B,因为进程A和进程B都知道int类型,因
此进程B可以直接从内存中还原出数据,而对于自定义数据类型,例如进程A自定义了一个Student对象,进程B并不知道,如
果直接传递字节流给进程B,面对一堆字节流,进程B不知道怎么重构还原,需要进程A告诉重构方法,这便是序列化和反序
列化的过程,这也是传递自定义对象需使用序列化的原因。
3.使用示例使用示例
服务端创建自定义类型,这包括创建Student.java和Student.aidl,两个文件分别在aidl目录下和java目录下,但两个文件所在的
包名必须相同,否则编译不通。
java代码里实现Parcelable里的接口,其中值得注意的是writeToParcel方法和readFromParcel方法里面的写和读取顺序是需要一
资源评论
weixin_38520258
- 粉丝: 4
- 资源: 905
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功