為什么使用binder,binder是一種跨進(jìn)程通信機(jī)制。
部分參考該文章:http://www.lxweimin.com/p/bdef9e3178c9
從下往上依次為
內(nèi)核層:Linux 內(nèi)核和各類硬件設(shè)備的驅(qū)動(dòng),這里需要注意的是,Binder IPC 驅(qū)動(dòng)也是在這一層實(shí)現(xiàn),比較特殊
硬件抽象層:封裝「內(nèi)核層」硬件驅(qū)動(dòng),提供可供「系統(tǒng)服務(wù)層」調(diào)用的統(tǒng)一硬件接口
系統(tǒng)服務(wù)層:提供核心服務(wù),并且提供可供「應(yīng)用程序框架層」調(diào)用的接口
Binder IPC 層:作為「系統(tǒng)服務(wù)層」與「應(yīng)用程序框架層」的 IPC 橋梁,互相傳遞接口調(diào)用的數(shù)據(jù),實(shí)現(xiàn)跨進(jìn)層的通訊
應(yīng)用程序框架層:這一層可以理解為 Android SDK,提供四大組件,View 繪制體系等平時(shí)開(kāi)發(fā)中用到的基礎(chǔ)部件
1,Android使用的linux內(nèi)核,應(yīng)用了很多跨進(jìn)程通信
2,binner性能比較高
3,安全性比較高。
Binder IPC 屬于 C/S 架構(gòu),包括 Client、Driver、Server 三個(gè)部分
Client 可以手動(dòng)調(diào)用 Driver 的 transact 接口,也可以通過(guò) AIDL 生成的 Proxy 調(diào)用
Server 中會(huì)啟動(dòng)一個(gè)「線程池」來(lái)處理 Client 的調(diào)用請(qǐng)求,處理完成后將結(jié)果返回給 Driver,Driver 再返回給 Client。