BinderService:
bindService能實現的一個前提就是Android爲我們提供了一套AIDL(Android Interface Definition Language)即Android接口定義語言,來幫助我們實現遠程
Binder的通信
主要流程:
- Activity向ActivityManagerService發送一個綁定xxxService組件的進程間的請求。
- ActivityManagerService在接到請求後檢查運行XXXService組件的進程是否處於運行狀態,如果沒有運行就啓動這個進程。
- 在運行XXXService的進程啓動後,ActivityManagerService就請求它返回一個Binder的本地(代理)對象,以便於Activity通過這個Binder對象和Service建立連接。
- AMS將從XXXService中獲得本地(代理)Binder對象發送給Activity。
Activity在獲得Binder對象後就可以去訪問XXXService中實現的接口。
爲什麼Intent傳輸數據大小有限制:
(同步傳遞)Binder通信共享內存的大小範圍爲10241024-40962
(異步傳遞)異步傳遞大小要除以2