Zygote進程就啓動初探

 

 

 

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進程爲這個應用程序創建一個新的進程。
 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章