AIDL(android interface definition language)用于进程间通信
实现步骤:
1.创建AIDL接口文件,该文件定义了客户端可用的接口及方法
2.实现对应接口
3.将接口暴露给客户程序使用
AIDL语法类似Java接口,支持的数据类型有:
1.所有基础类型
2.String、List、Map、CharSequence等
3.其他AIDL接口类型
4.所有Pracelable类型
流程:
1.创建一个 MyService.aidl文件,Android AIDL工具会生成对应的MyService.java文件,这个文件里包含了Stub
2.新建一个类继承Service,为了实现服务,让这个类中的onBind方法返回一个IBinder类的实例,这个IBinder实例代表了远程服务的实现。
此时返回实现了在AIDL中定义的方法的MyService.Stub的实例作为IBinder实例,如下:
@Override
public IBinder onBind(Intent intent) {
return new MyService.Stub() {
//此处为实现AIDL接口中的方法
};
}
3.实现了onBind方法,就可以连接客户程序(需要注意在客户端需要存一个服务端实现了的aidl接口描述文件,但是客户端只是使用该aidl接口,
不需要实现它的Stub类)与服务了,为了建立连接,则需要实现ServiceConnection类,重写onServiceConnected和onServiceDisconnected方法
onServiceConnected(ComponentName name, IBinder Service)方法中接收一个IBinder实例作为参数,这个IBinder实例即为远程服务的一个实例,
将它cast即MYService.Stub.asInterface(service)后用来进行通信。