aidl: android
inte***cedefinition language,即安卓介面定義語言,它是一種android內部程序通訊介面的描述語言,通過它我們可以定義程序間的通訊介面
ipc:inter processcommunication :內部程序通訊
首先實現aidl遠端服務:
1,新建as工程,new->aidlfile建立imiddleperson.aidl。
2,然後新建remoteservice繼承service
3,在remoteservice新建內部類mybinder
private class mybinder extends imiddleperson.stub
}
4在onbind方法中返回mybinder類物件
5在manifest中宣告service 並新增意圖過濾器
這樣遠端服務建立完成。
客戶端繫結遠端服務
1,繫結
intent intent = new intent();
intent.setaction("org.cailu.remoteservice");
//android 5.0以後service服務必須採用顯示方式啟動,所以必須加上這句話。就是aidl檔案所在的包名
intent.setpackage("cailu.org.aidlserver");
bindservice(intent, conn, bind_auto_create);
2.建立myconn實現serviceconnection
介面。在
onserviceconnected
中將service
轉成imiddleperson
物件。
imiddleperson imp = imiddleperson.stub.asinte***ce(service);
3.通過imp可以訪問遠端的方法
Android程序間通訊
intent intent new intent this,test.class startactivity intent 而跨程序訪問並不需要context物件和activity物件,但是需要指定所訪問的acitivity對應的action,有些activity還需要指定乙個uri物件,比如使用程...
android 程序間通訊
跨程序通訊要求把方法呼叫及資料分解至作業系統可以識別的程度,並將其從本地程序傳輸至遠端程序。然後在遠端程序彙總重新組裝並執行該呼叫。然後,返回值將沿相反的方向傳輸回來。android為我們提供了以下幾種程序機制 this allows for the implementation of messag...
Android程序間通訊Binder個人理解記錄
service元件向servicemanager註冊,並實現具體業務,當有client請求時返回乙個可傳輸資料的額ibinder物件實體 client客戶端通過context.bindservice 和servicemanager通訊查詢需要呼叫的服務是否註冊。serviceconnection聯結...