Android 通信方式

最常用的通信方式是Binder、Socket、Handler,當然也有少量其他的IPC方式,比如殺進程Process.killProcess()采用的是signal方式。

1. Binder

Binder通信采用c/s架構(gòu),從組件視角來說,包含Client、Server、ServiceManager以及binder驅(qū)動,其中ServiceManager用于管理系統(tǒng)中的各種服務(wù)


20180821102605414.png

2.Socket

Socket通信方式也是C/S架構(gòu),比Binder簡單很多。在Android系統(tǒng)中采用Socket通信方式的主要:

zygote:用于孵化進程,系統(tǒng)進程system_server孵化進程時便通過socket向zygote進程發(fā)起請求;

installd:用于安裝App的守護進程,上層PackageManagerService很多實現(xiàn)最終都是交給它來完成;

lmkd:lowmemorykiller的守護進程,Java層的LowMemoryKiller最終都是由lmkd來完成;

adbd:這個也不用說,用于服務(wù)adb;

logcatd:這個不用說,用于服務(wù)logcat;

vold:即volume Daemon,是存儲類的守護進程,用于負責(zé)如USB、Sdcard等存儲設(shè)備的事件處理。

Socket方式更多的用于Android framework層與native層之間的通信。

3.Handler

Handler
Binder/Socket用于進程間通信,而Handler消息機制用于同進程的線程間通信,Handler消息機制是由一組MessageQueue、Message、Looper、Handler共同組成的,為了方便且稱之為Handler消息機制。

很多時候,Handler是工作線程向UI主線程發(fā)送消息,即App應(yīng)用中只有主線程能更新UI,其他工作線程往往是完成相應(yīng)工作后,通過Handler告知主線程需要做出相應(yīng)地UI更新操作,Handler分發(fā)相應(yīng)的消息給UI主線程去完成

20180821102532388.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,828評論 25 709
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,929評論 2 59
  • 馬上快結(jié)婚十年了,回憶起來就跟夢一樣。仿若和膩味(對愛人的昵稱)才剛剛認識,可歲月神偷,身邊的孩子和往事,都...
    漫漫無憂閱讀 404評論 0 1
  • 韋德被交易回?zé)峄鹆耍@是一件幸事,盡管是和一個幾乎沒什么用的二輪簽交換,看似有些屈辱,但從他同意進入騎士替補陣容開...
    大嘴胖胖熊閱讀 494評論 0 2
  • “你變了,你變得更加堅強??墒且粋€女的變得堅強沒有什么好處,是個男人就不會喜歡?!? 你不懂啊,不堅...
    wy蝸牛閱讀 202評論 0 0

友情鏈接更多精彩內(nèi)容