用戶從Launcher程序點擊應用圖標可啟動應用的入口Activity礼预,Activity啟動時需要多個進程之間的交互镣典,Android系統(tǒng)中有一個zygote進程專用于孵化Android框架層和應用層程序的進程。還有一個system_server進程跌穗,該進程里運行了很多binder service痘系,例如ActivityManagerService菲嘴,PackageManagerService,WindowManagerService汰翠,這些binder service分別運行在不同的線程中龄坪,其中ActivityManagerService負責管理Activity棧,應用進程复唤,task健田。
activity_start_flow.png
主要分為5步:
1.Launcher程序捕獲到用戶點擊應用圖標時,會通知ActivityManagerService(下文簡稱AMS)啟動應用入口Activity佛纫。
2.AMS檢測到這個應用還未啟動抄课,則會通知Zygote進程孵化出應用進程唱星。
3.在這個dalvik應用進程中執(zhí)行ActivityThread.main()。
4.應用進程通知AMS跟磨,應用進程已經啟動间聊,AMS保存應用進程的代理對象,通過這個代理對象來控制應用進程抵拘。
5.AMS通知應用進程創(chuàng)建入口Activity實例哎榴,并執(zhí)行其生命周期方法。