Android – Binder機制 – Binder架構總結

來源:互聯網
上載者:User

 

以下幾篇文章是較深入分析binder機制。

目錄

 

1. Android - Binder機制 - ServiceManager

2. Android - Binder機制 - 普通service註冊

3. Android - Binder機制 - 獲得普通service

4. Android - Binder機制 - client和普通service互動

5. Android - Binder機制 - Binder架構總結

6. Android - Binder機制 - ProcessState和IPCThreadState

7. Android - Binder機制 - 驅動

Android - Binder機制 - Binder架構總結

 

UML

說明

1. 以中間的IXXX的垂直線為準,左邊是用戶端進程,它們的命名類似Bp***,右邊是服務端進程,它們的命名類似Bn***;
2. 以中間的一條水平虛線為界線,上邊執行的是具體業務,如我們之前講到的AddServcie、GetService、StartPreview等,它們都是普通業務,下邊執行的是資料互動,就是講上邊的業務資料打包成binder定義的資料包結構,然後通過binder驅動發送出去或者接收;
3. 第一篇的ServiceManager不是按照Bn***類構建的,但是只是我用的版本不是這樣構建的,ServiceManager也完全可以用Bn***來構建,用Bp***和Bn***來構建,讓程式員在看代碼時更加輕鬆,代碼結構也更加簡潔,所以,基本上都是通過Bp***和Bn***來完成的;
4. Bn***和Bp***都繼承了兩個基類,一個是IXXX,一個是BBinder(或者BpRefBase),其實也正說明了BpXXX和BnXXX既要完成業務層的任務,也要執行資料轉送相應的任務;
5. IPCThreadState是真正和驅動打交道的角色,一個進程可以有幾個;
6. ProcessState的任務很簡單,一是開啟binder裝置供IPCThreadState使用,一個是獲得ServiceManager;
7. 用戶端至少持有兩個服務端,一個是ServiceManager,一個是它的商務服務端XXXService;

通過這個圖,你是不是對複雜的binder找到了很多的規律了;

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.