AIDL通訊原理,androidaidl原理

來源:互聯網
上載者:User

AIDL通訊原理,androidaidl原理

AIDL (Android Interface Definition Language),通過定義通訊介面來實現處理序間通訊。這是Google提供的一種在安卓應用處理序間通訊的工具。所以要瞭解AIDL的通訊原理,我們需要圍繞以下兩個問題來展開。

1、為什麼需要AIDL?

我們都知道AIDL的目的是進行處理序間通訊。所以在瞭解AIDL原理之前先要瞭解一下什麼叫處理序間通訊。處理序間通訊涉及到兩個名詞,一個是進程間,一個是通訊。進程間就是兩個或多個進程之間,所以這裡先要明確一個概念,處理序間通訊涉及到多個實體。其次是通訊,什麼是通訊呢?打電話,發郵件,發QQ訊息都是通訊,他們之間的共同點就是資料交換。所以簡單來說,處理序間通訊就是多個多個實體間的資料交換,而且這些資料都是運行時資料,因為通訊實體是運行時產生的。那麼一般情況下,我們的應用程式是怎樣進行資料交換呢?最簡單的辦法就是共用記憶體,即建立記憶體共用區,然後進程B往記憶體共用區裡寫,進程A從記憶體共用區裡讀,從而完成通訊。但是在安卓裡是行不通的,因為單獨的進程是運行在自己的虛擬機器裡面,有著自己的記憶體映射,所以記憶體共用沒法實現,只能藉助AIDL。

2、AIDL是怎麼起作用的?
在這之前,我們先討論AIDL的實現步驟:
1)、定義AIDL檔案;
2)、實現AIDL檔案裡面定義的介面;
3)、暴露介面;
4)、調用;

這四個過程可以類比於c/s模型,如果一個用戶端需要訪問伺服器中的某一個網頁,它需要經過幾個步驟呢?同樣也是需要四個:
1)、定義通訊規則,已經有了現有的規則——tcp/ip協議族;
2)、在伺服器中編寫網頁檔案;
3)、暴露資源檔的訪問地址;
4)、用戶端發起請求,擷取資源,完成通訊;

從上面這個對比可以看出,這裡面的關鍵就是定義協議這一步,即定義AIDL檔案的過程,之後有一個重要的過程,即編譯AIDL檔案,這裡編譯器為我們做了一個最重要的一步,產生了一個Stub類,這個類是個抽象類別,繼承自Binder類,並實現了我們在AIDL檔案中定義的介面,所以我們最終對介面對象的操作最終都轉換成了Stub對象的操作,具體的通訊過程有Stub對象為我們完成了,也就是拆分對象資料,和產生對象資料這些繁瑣的事情。所以AIDL的通訊原理其實只是定義了通訊規則,具體的實現還是靠binder.所以最終的分析結果就是,AIDL將我們需要傳遞的資料拆分後,通過Binder傳遞。在訪問端AIDL把接收到的結果組裝成我們期望的對象,把底層的操作屏蔽了。

相關關鍵詞:
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.