Android Studio AIDL實現

AIDL:Android Interface Definition Language,即Android接口定義語言.

android studio中使用aidl實現跨進程通訊,具體步驟如下:

一:服務端

第一步:第一步:通過as創建一個aidl文件,在app右鍵,如下圖:
這裏寫圖片描述

輸入自己想要的名字,別的都默認,點擊Finish 我這裏的名字叫 CalculateAidlInterface創建好如下:

這裏寫圖片描述

再看看 CalculateAidlInterface.aidl 裏面怎麼寫的,其實就一個計算的方法 客戶端傳2個int類型的值,服務端計算和

這裏寫圖片描述

第二步:CalculateAidlInterface.aidl 編寫完成之後 需要Build–>Make Module app,生成相應的java文件,如下圖:

這裏寫圖片描述

第三步:接下來,就該完成我們的CalculateAidlService邏輯部分了,CalculateAidlService.java代碼如下:
先說下我遇到的坑,我是通過as右鍵創建的service 他自動會加上下面2個屬性 就會導致客戶端調用不起來,所以記得一定要刪除
android:enabled=”false”
android:exported=”false”

這裏寫圖片描述

再來看下AndroidManifest.xml中CalculateAidlService的配置:action是客戶端調用用到的

這裏寫圖片描述

服務端就已經完成了。接下來我們來看一下客戶端的:

二:客戶端

第一步:同樣需要和服務端一樣創建aidl文件,可以把服務器的原封不動的複製過來,包括包名

這裏寫圖片描述

第二步:再次執行 Build–>Make Module app

再來看下客戶端怎麼調用的?

第三步:先創建一個ServiceConnection 對象

private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName arg0) {

    }

    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        //獲取遠程Service的onBinder方法返回的對象代理
        service = CalculateAidlInterface.Stub.asInterface(binder);
        if (service != null) {
            int calculation = 0;
            try {
                calculation = service.calculationAddition(1, 2);
            } catch (RemoteException e) {
                e.printStackTrace();
            }
            text.setText("我是客戶端:calculationResult = " + calculation);
        }
    }

};

第四步:綁定

這裏寫圖片描述

第五部:調用

這裏寫圖片描述

第六步:不用的時候解除綁定

這裏寫圖片描述

到此代碼就全部結束了,簡單吧,下面我們來看一下效果如何:

1,服務端的效果

這裏寫圖片描述

2,客戶端的效果:

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章