簡單理解 Binder 呼叫流程

2021-08-28 15:04:47 字數 578 閱讀 8199

從大年初一購買電影票說起

客戶端:獲取服務端在 binder 驅動中對應的引用,然後呼叫它的 transact() 方法,向服務端傳送訊息(客戶端程序)

服務端:該物件被建立後,內部則會啟動乙個隱藏執行緒,不斷的接收從客戶端傳送過來的資料,然後執行 binder 物件中的 ontransact() 函式(binder 實現類所在程序)

binder 驅動:對 android 應用層來說,binder 是客戶端和服務端進行通訊的媒介

service manager:服務必須在此註冊後,才能被客戶端訪問,當客戶端需要該 binder 服務時,會去 service manager 查詢

1.客戶端在 service 中通過 bindservice() 方法,獲取遠端服務例項

2.該例項實現了服務介面的方法,如果是跨程序呼叫,則該例項對應的是服務端的 proxy **物件

3.呼叫介面的方法,執行 transact(),當前程序被掛起

4.執行服務端對應的方法,之後返回資料喚醒客戶端

對Binder的理解?

直觀來說 binder是android中的乙個類,他實現了ibiner介面。從ipc角度來說 binder是android中的一種跨程序通訊方式,binder還可以理解為一種虛擬的物理裝置,他的裝置驅動是 dev binder,該通訊方式在linux中沒有 從android framework角度來...

備忘 Binder簡單總結

binder結構 當我們使用aidl進行跨程序呼叫時,我們需要在兩端各建立aidl檔案,此時系統會幫我們在generated source aidl debug 包名 下建立兩個一樣的binder檔案,這個檔案分為 結構,即描述遠端呼叫方法的介面 客戶端轉換binder物件以及服務端處理請求的stu...

AIDL中Binder的個人理解

遠端service與客戶端通訊時,繫結服務後,服務端返回的binder物件,被客戶端接收後,客戶端呼叫該binder的物件的方法其實就是呼叫的服務端的方法。此時,若客戶端呼叫服務端的方法時傳入了客戶端實現的介面物件,服務端呼叫該介面物件的方法時,其實就是服務端呼叫的客戶端的方法 兩種情況的 被呼叫方...