最常用的通信方式是Binder、Socket、Handler,當然也有少量其他的IPC方式,比如殺進程Process.killProcess()采用的是signal方式。
1. Binder
Binder通信采用c/s架構(gòu),從組件視角來說,包含Client、Server、ServiceManager以及binder驅(qū)動,其中ServiceManager用于管理系統(tǒng)中的各種服務(wù)

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主線程去完成
