流程圖
①點擊桌面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/