Android進階解密讀書筆記5——第3章:應用程序進程啓動過程——第1、2、3、4小節

第2章我們學習了 Android 系統的啓動流程,系統啓動後,我們比較關心應用程序是如何啓動的,啓動一個應用程序首先要保證該應用程序的進程已經被啓動,本章我們就來學習應用程序進程啓動過程。需要注意,是“應用程序進程啓動過程”,不是“應用程序啓
動過程”,關於應用程序啓動過程(根 Activity 啓動過程)將在第 章進行講解。

3.1、應用程序進程簡介

要想啓動一個應用程序,首先要保證這個應用程序所需要的應用程序進程已經啓動。AMS在啓動應用程序時會檢查這個應用程序需要的應用程序進程是否存在,不存在就會請求Zygote 進程啓動需要的應用程序進程。在 2.2 節中,我們知道在 Zygote的Java 框架層中會創建 Server 端的 Socket ,這個 Socket 用來等待 AMS 請求 Zygote 來創建新的應用程序進程。Zygote 進程通過 fock 自身創建應用程序進程,這樣應用程序進程就會獲得 Zygote進程在啓動時創建的虛擬機實例。當然,在應用程序進程創建過程中除了獲取虛擬機實例外,還創建了 Binder 線程地和消息循環,這樣運行在應用進程中的應用程序就可以方便地使用 Binder 進行進程間通信以及處理消息了。

3.2、應用程序進程啓動過程介紹

應用程序進程創建過程的步驟比較多,這裏分爲兩個部分來講解,分別是AMS發送啓動應用程序進程請求,以及 Zygote 接收請求並創建應用程序進程。

3.2.1、AMS 發送啓動應用程序進程請求

 

 

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