Android系統中的socket機制和binder機制一樣,都是可以用來進行進程間通信,讀者可以自己對比一下這兩者的不同之處,Binder進程間通信機制可以參考Android進程間通信(IPC)機制Binder簡要介紹和學習計劃一文。
參考Android應用程序進程啓動過程的源代碼分析一文中的Step 4,ActivityManagerService是通過Process.start函數來創建一個新的進程的,而Process.start函數會首先通過Socket連接到Zygote進程中,最終由Zygote進程來完成創建新的應用程序進程,而Process類是通過
這樣,Zygote進程就啓動完成了,學習到這裏,我們終於都對Android系統中的進程有了一個深刻的認識了,這裏總結一下:
1. 系統啓動時init進程會創建Zygote進程,Zygote進程負責後續Android應用程序框架層的其它進程的創建和啓動工作。
2. Zygote進程會首先創建一個SystemServer進程,SystemServer進程負責啓動系統的關鍵服務,如包管理服務PackageManagerService和應用程序組件管理服務ActivityManagerService。
3. 當我們需要啓動一個Android應用程序時,ActivityManagerService會通過Socket進程間通信機制,通知Zygote進程爲這個應用程序創建一個新的進程。