binder機制 是谷歌優化在android上更適合終端的IPC(多進程通訊方式),知足系統對通訊方式,傳輸性能和安全性的要求。android
特性:安全
1. 用驅動程序來推動進程間的通訊。
2. 經過共享內存來提升性能。
3. 進程間同步調用以及異步調用異步
...........................................性能
IADL是用binder機制進行IPC的典型表明優化
IADL是一個接口描述文件,規定IPC通訊的接口,通常使用於client/server模式server
c/s雙方寫好IADL後,系統會生成一個繼承binder以及實現這個接口的類---Stub對象
XXXInterface.Stub extend binder implement XXXInterface繼承
server方:接口
能夠經過Stub類,實現接口功能,向client提供接口相關的服務進程
client方:
經過server提供的binder,來使用服務。
client/server是如何經過binder進行通訊的呢?
咱們能夠看到Stub提供了3個重要的方法,以及遠程binder Proxy類。
asInterface(Ibinder obj)
transaction(...)
ontransaction(...)
client經過asInterface(binder) 這個方法,把server提供的binder 生成 binder Proxy對象
經過 transaction()來與遠程binder對象進行通訊。
到底如何實現通訊呢?
首先把數據存入Parcel中,經過binder文件驅動通知,經過Ashmen內存共享通訊
具體如何作的,之後有時間在講。
server經過 ontransaction()方法,把處理結果返回給client。