1. 程式人生 > >應用程式程序啟動過程

應用程式程序啟動過程

--摘自《Android進階解密》

1.AMS在啟動應用程式時會檢查者應用程式需要的應用程序是否存在,不存在就會請求Zygote程序啟動需要的應用程式程序

2.Zygote的Java框架層中會建立一個Server端的Socket,這個Socket用來等待AMS請求Zygote來建立新的應用程式程序

3.Zygote程序通過fock自身建立應用程式程序,這樣應用程式程序就會獲得Zygote程序在啟動時建立的虛擬機器例項。當然還建立了Binder執行緒池和訊息迴圈,這樣執行在應用程序中的應用程式就可以方便地使用Binder進行程序間通訊以及處理訊息了

應用程式程序啟動過程

第一步:AMS傳送啟動應用程式程序請求

第二步:Zygote接收請求並建立應用程式程序

其中:

4.ZygoteInit類的zygoteInit方法會啟動Binder執行緒池

5.將當前執行緒註冊到Binder驅動程式中,這樣我們建立的執行緒就加入了Binder執行緒池中,新建立的應用程式程序就支援Binder程序間通訊了,我們只需要建立當前程序的Binder物件,並將它註冊到ServiceManager中就可以實現Binder程序間通訊

6.RuntimeInit的invokeStaticMain方法最後會丟擲一個MethodAndArgsCaller異常,抓取異常過程中會執行call.run方法,run方法中會呼叫mMethod.invoke,其實就是ActivityThread的main方法,main方法中開啟了訊息迴圈