2020-11-11(aidl)
讓其它應用可以調用當前應用service的方法
RPC remote procedure call 遠程過程調用 AIDL 解決就是rpc的問題
IPC inter process communication 進程間通信
每一個android應用都運行在獨立的進程見通信
Activity intent
BroadcastReceiver 通過onReceive方法,可以處理其它應用發來的廣播
aidl實現過程
提供遠程服務方法的應用
a.創建一個Service重寫onBuild方法,在onBinder中返回一個Binder對象,需要遠程調用的方法都放到這個Binder對象中
pulic class RemoteService extends Services
{ public IBinder onBind (Intent intent)
{ return myBinder();
}
public class MyBinder extends Binder{
public void callRemoteMethod(){
remoteMethod();
}
}
public void remoteMethod(){
System.out.println(“remoteMethod is called”);
}
}
b.在清單文件中聲明對飲搞得service,需要添加一個inter-filter可以通過隱式意圖來調用service
c.創建一個接口,需要暴露給其它應用調用的方法都聲明在這個接口中
d.把接口文件的擴展名改為.aidl,需要注意aidl文件不支持public關鍵字
如果aidl創建得沒有問題,就會在gen目錄下生成一個Service.java
e.修改service的代碼,讓MyBinder繼承Stub
遠程調用服務的應用
a.通過隱式意圖以及bindService方式,開啟遠程服務
b.創建ServiceConnection的實現類
c.在當前應用中,創建一個目錄跟提供遠程服務的應用aidl所在的目錄結構保持一致,把aidl文件copy過來,如果沒有問題,會在gen目錄下生成一個lservice.java文件,包名跟aidl文件的包名一致
d.在onserviveConnection方法中,通過下列這個方法
把當前的binder對象轉換成遠程服務中的接口類型,最終通過這個對象實現調用遠程方法
(中間的函數還未寫出,后期補上,謝謝各位支持)
總結
以上是生活随笔為你收集整理的2020-11-11(aidl)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020-11-11(对话框简单总结)
- 下一篇: 2020-11-11(C语言下JNI开发