Binder通信——用戶空間C/C++層架構與Java層對接點概述

一,Java層主要通過下述API訪問Binder:
Binder——————————Java層Binder對象
BinderProxy——————Java層服務端Binder在客戶端進程中的代理對象
IHelloService————— 業務接口
HelloService——————服務進程中業務接口實現類
BpHelloServiceProxy——服務進程業務實現類在客戶端(遠端)進程中的服務代理對象(遠程代理對象)

類圖關係如下(本頁圖片過小,看不清,請在瀏覽器新標籤頁中查看圖片):

這裏寫圖片描述

二,C/C++層訪問Binder驅動API:

IInterface,BpInterface(繼承INTERFACE),BnInterface(繼承INTERFACE)———業務相關的公共類
BnHelloService(實現onTransaction方法),HelloService(實現業務相關的方法) —服務進程中業務實現類
BpHelloService———————————————————————————客戶端進程的業務實現類

類關係圖如下(本頁圖片過小,看不清,請在瀏覽器新標籤頁中查看圖片):

這裏寫圖片描述

三,Java與C/C++對節點:

Java層與C/C++層主要有三個地方的對節點:
這裏寫圖片描述

具體細節如下圖所示(本頁圖片過小,看不清,請在瀏覽器新標籤頁中查看圖片):
這裏寫圖片描述

圖中分爲三大塊來分別描述Java層與C/C++層Binder通信框架;在藍色方框中描述了Java層APP應用調用Java層Binder接口,通過Native層的對節點與C/C++層的Binder通信框架對接,然後調用C/C++層Binder通信框架的相關API,最終通過IPC層進入內核Binder驅動,到達目標進程實現進程間通信;

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