讀書筆記:android設計與實現第三…

Binder機制:
Android使用了Linux的進程管理機制,以進程爲單位分配虛擬地址空間,爲了安全考慮,一個進程禁止直接與其他進程交互,這樣不同進城之間是相互隔離的,如果進程間需要通信,必須通過android的linux內核提供的進程間通訊機制實現間接通信。linux使用的進程間的通信方式有很多種:Socket,Signal,Pipe,MessageQueue,Semaphore,SharedMemory等,但是以上的機制要麼效率低,要麼不適合封裝給上層複用,因此在android中使用的是Binder機制。
binder是對Linux內核層的一個擴展,屬於一個字符設備驅動,android通過這個驅動實現不同進程之間的間接通訊,Android通過對Binder封裝,提供了一套Binder操作的框架,便於上層使用,這樣Binder的概念便不僅是一個驅動,而是被擴展爲一種架構,binder架構分爲Native層和Java層兩部分。
應用框架層爲應用開發都提供了Android四大組件,四大組件是由Java代碼實現,不同的組件可以位於不同的進程中,不同的進程需要交互時,需要用到Binder通信。Binder在Java框架層的應用不僅限於四大組件換交互,在四大組件中也可以通過應用框架層提供的getSystemService接口直接使用Java系統服務。。

Binder換java框架層和Native框架層一樣,具備C/S體系結構的主要組成部分:Client,Proxy,Stub,Server和Service。Java框架層沒有提供類似Native框架層的servicemanager,而是通過JNI將Native框架層的servicemanager在Java框架層的代理,此外,Java框架層通過JNI將Native框架層換BpBinder和BBinder封裝爲Java對象,供Java框架層使用,爲了便於Java框架開發系統服務,要jav框架層中提供了AiDl工具,用於生成統一的Proxy和Stub接口。

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