AIDL的實現(xiàn)過程!
1、提供遠程服務(wù)方法的應(yīng)用
1.創(chuàng)建一個Service,重寫onBind方法,在onBind中返回一個Binder對象,需要遠程調(diào)用的方法放到這個Binder對象中
2.在清單文件中聲明對應(yīng)的Service,需要添加一個intent-filter,可以通過隱式意圖調(diào)用Service
3.創(chuàng)建一個接口,需要暴露給其它應(yīng)用調(diào)用的方法都聲明在這個接口中
4.把接口文件的擴展名修改為.aidl,需要注意的是,.aidl文件不支持public關(guān)鍵字,如果aidl創(chuàng)建得沒有問題,就會在gen目錄下生成一個IService.java
5.修改Service的代碼,讓MyBinder繼承Stub
2、遠程調(diào)用服務(wù)的應(yīng)用
1.通過隱式意圖以及bindService的方式開啟遠程服務(wù)
2.創(chuàng)建ServiceConnection的實現(xiàn)類
3.在當(dāng)前應(yīng)用中創(chuàng)建一個目錄,目錄結(jié)構(gòu)要跟提供遠程服務(wù)的應(yīng)用的aidl文件所在目錄結(jié)構(gòu)保持一致,把aidl文件拷貝過來,如果沒有問題,會在gen目錄下生成一個IService.java文件,包名跟aidl文件的包名一致
4.在onServiceConnected方法中,通過Stub.asInterface(service)把當(dāng)前的IBinder對象轉(zhuǎn)化成遠程服務(wù)中的接口類型,最終通過這個對象實現(xiàn)調(diào)用遠程方法

