關鍵字
- aidl
- 進程間通信
- binder機制
aidl
全名安卓接口定義語言,用於進程間通信。簡單理解的話,就是類似應用的服務器和客戶端。服務器開啓一個服務處理數據,客戶端傳遞數據以及響應回調。具體使用方法見AndroidStudio實現AIDL。建議自己跟着文章手寫一遍,並細看build之後由aidl文件生成的java文件中內容。
4種進程間通信
- Activity(應用跳到撥打電話頁面)
- ContentProvider(獲取手機系統聯繫人信息,音視頻等)
- BroadcastReceiver(類似聽收音機的廣播,被動接收)
- Service(遠程Service,跟aidl結合使用)
Binder機制
Binder是安卓進程間通訊的一種方式,aidl是Binder通信的一個實踐,Binder採用的是C/S架構,最上層的java層(C/S),經過framework層,JNI層,native層,最終通過ioctl(對設備io通道進行管理)跟內核層進行通信。貫穿始終的是一個叫做ServiceManger的管理類。每啓動一個server進程,就會默認生成16個線程大小的線程池(每個應用的客戶端跟server交互產生一個線程,就算是百度或者360全家桶,16個線程也已足夠)。
參考文章
AndroidStudio實現AIDL
Android 進程間通信的幾種實現方式
Android Binder 進程間通訊機制