Android进程间通信:自定义类型 parcelable 实现
需积分: 15 71 浏览量
更新于2024-07-10
收藏 1.56MB PPT 举报
"进程间传递自定义类型参数-最新android技术总结"
在Android中,进程间通信(IPC,Inter-Process Communication)是应用之间共享数据的关键技术。AIDL(Android Interface Definition Language)是Android提供的一种机制,允许不同进程间的对象互相调用方法。然而,Aidl默认只支持基础数据类型和一些特定的类,如String、List、Map等。如果要传递自定义类型,我们需要使自定义类型支持Parcelable协议。
实现自定义类型在进程间传递的步骤如下:
1. 实现Parcelable接口:首先,你需要让你的自定义类型(例如`Person`)实现`Parcelable`接口。这需要重写`describeContents()`和`writeToParcel(Parcel dest, int flags)`方法。`writeToParcel()`用于将对象的状态(即它的属性)写入Parcel对象,而`describeContents()`通常返回0,表示不包含任何特殊内容。
2. 定义CREATOR:自定义类型中还需要包含一个名为`CREATOR`的静态成员,它是一个实现了`Parcelable.Creator`接口的匿名内部类。`Creator`有两个方法,`createFromParcel(Parcel source)`用于从Parcel中读取数据并构建新的对象,`newArray(int size)`则用于创建指定大小的自定义类型数组。
3. 创建AIDL文件:在自定义类型所在的包下创建一个与自定义类型同名的AIDL文件,例如`Person.aidl`。在AIDL文件中,使用`parcelable`关键字声明自定义类型。
4. 在AIDL接口中使用自定义类型:创建一个AIDL接口,比如`IPersonService.aidl`,导入自定义类型并声明需要的方法。在方法签名中使用自定义类型,例如`void save(in Person person);`
5. 实现AIDL接口:在服务端,你需要继承AIDL接口生成的 Stub 类来实现接口方法。例如,创建`ServiceBinder`类,继承`IPersonService.Stub`,并在`save(Person person)`方法中处理接收到的数据。
6. 配置Service:在服务(如`PersonService`)的`onBind(Intent intent)`方法中返回实现了AIDL接口的对象(`ServiceBinder`实例)。
7. 客户端使用:客户端应用需要拷贝服务端的AIDL文件和自定义类型文件到自己的源码目录,Eclipse或Android Studio会自动生成对应的接口类。然后,客户端可以通过绑定服务的方式调用远程服务的方法,传递自定义类型对象。
8. 配置AndroidManifest.xml:确保服务在`AndroidManifest.xml`中被正确声明,并设置意图过滤器以便客户端可以找到并绑定服务。
在这个例子中,`Person`类实现了Parcelable接口,`Person.aidl`文件声明了`Person`类型,`IPersonService.aidl`接口定义了`save`方法,`ServiceBinder`实现了服务端的逻辑,而客户端通过`bindService()`方法与服务进行通信,传递`Person`对象。
此外,3G(第三代移动通信)是一种支持多媒体通信的高速移动通信标准,包括WCDMA、CDMA2000和TD-SCDMA等。智能手机软件平台包括Symbian、Windows Mobile、RIM BlackBerry、Android、iPhone和Java/J2ME等,其中Android是由Google主导的开源移动操作系统,包含操作系统、中间件和核心应用。Android的架构分为三层,底层基于Linux内核,中间层提供各种服务和库,顶层则是应用程序和框架。
2017-11-08 上传
2019-07-29 上传
2015-11-08 上传
2023-09-01 上传
2023-08-21 上传
2023-04-01 上传
2023-06-11 上传
2023-05-19 上传
2023-06-03 上传
四方怪
- 粉丝: 28
- 资源: 2万+
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能