桌面Launcher啟動app的流程(學習記錄)

流程圖

①點擊桌面App圖標,Launcher進程采用Binder IPC向system_server進程發起startActivity請求;

②system_server進程接收到請求后,向zygote進程發送創建進程的請求;

③Zygote進程fork出新的子進程,即App進程;

④App進程,通過Binder IPC向sytem_server進程發起attachApplication請求;

⑤system_server進程在收到請求后,進行一系列準備工作后,再通過binder IPC向App進程發送scheduleLaunchActivity請求;

⑥App進程的binder線程(ApplicationThread)在收到請求后,通過handler向主線程發送LAUNCH_ACTIVITY消息;

⑦主線程在收到Message后,通過反射機制創建目標Activity,并回調Activity.onCreate()等方法。

⑧到此,App便正式啟動,開始進入Activity生命周期,執行完onCreate/onStart/

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。