# 讀 Android 開發藝術探索 &5

關鍵詞:Binder 連接池 / BinderPool / AIDL / Service /

AIDL 是最常用的進程間通信方式,先溫故一下它的大致流程:(1)創建一個 Service 和一個 AIDL 接口;(2)創建一個類,繼承於 AIDL 接口中的 Stub 類,並實現 Stub 中的抽象方法;(3)在 Service 中的 onBind 方法中返回這個類的對象;(4)客戶端綁定服務端的 Service,建立連接後訪問遠程服務端;

正文 #

本次筆記的梳理主要是有關 Binder 連接池,需要知道以下幾點:

  1. 隨着 AIDL 數量的增加,我們並不能無限制的增加 Service,作爲四大組件之一的 Service 本身也是一種系統資源,我們需要減少 Service 的數量,將所有的 AIDL 放在同一個 Service 中去管理;
  2. Binder 連接池的主要作用就是將每個業務模塊的 Binder 請求統一轉發到遠程 Service 中去執行,從而避免了重複創建 Service 的過程;
  3. 只需要創建一個 Service 即可完成多個 AIDL 接口的工作;
  4. BinderPool 是一個單例實現,在同一個進程中只會初始化一次,所以提前初始化 BinderPool,可以優化程序的體驗,比如放在 Application 裏面;
  5. BinderPool 中有斷線重連的機制,當遠程服務意外終止時,BinderPool 會重新建立連接;
  6. BinderPool 能夠極大的提高 AIDL 的開發效率,並且可以避免大量的 Service 創建,因此,建議在 AIDL 開發工作中引入 BinderPool 機制;

End.

Note by HF.
Learn from 《Android 開發藝術探索》


發佈了104 篇原創文章 · 獲贊 63 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章