android學習5:AIDL

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

發佈了25 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章