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)後用來進行通信。