Binder系列9—如何使用AIDL

Posted by Gityuan on November 23, 2015

自定义binder架构的 client/ server组件

一、AIDL

1.1 Server端

RemoteService.java

本例是为了演示进程间的通信机制,故需要将Service与Activity处于不同的进程,需要在AndroidManifest.xml中,把service配置成android:process=":remote",进程也可以命名成其他的。

1.2 Client端

ClientActivity.java

1.3 AIDL文件

(1)IRemoteService.aidl 定义远程通信的接口方法

(2)MyData.aidl 定义远程通信的自定义数据

1.4 Parcel数据

MyData.java

1.5 运行

该工程会生成一个apk,安装到手机,打开apk,界面如下:

apk

界面上有三个按钮,分别是功能分别是bindService(绑定Service), unbindService(解除绑定Service), killProcess(杀死Service进程)。

从左往右,依次点击界面,可得:

apk

二、原理分析

调用图:

aidl image

采用AIDL技术,是原理还是利用framework binder的架构。本文的实例AIDL会自动生成一个与之相对应的IRemoteService.java文件,如下:


 

http://gityuan.com/2015/11/23/binder-aidl/