1.當(dāng)電源鍵按下系統(tǒng)加載引導(dǎo)程序BootLoader到RAM中凸主,開(kāi)始執(zhí)行
2.Linux內(nèi)核啟動(dòng)
3.當(dāng)內(nèi)核啟動(dòng)時(shí)臣嚣,首先進(jìn)行系統(tǒng)設(shè)置init.rc文件并啟動(dòng)第一個(gè)進(jìn)程:init
4.init進(jìn)程啟動(dòng)啟動(dòng)zygote進(jìn)程啟動(dòng)
5.zygote虛擬機(jī)啟動(dòng)一個(gè)子進(jìn)程system_server,同時(shí)定義了一個(gè)Socket用來(lái)處理AMS啟動(dòng)應(yīng)用的請(qǐng)求年缎,fork出了SystemServer進(jìn)程忍弛,SystemServer和Zygote進(jìn)程是Android框架中兩個(gè)重要的進(jìn)程,系統(tǒng)里重要的進(jìn)程都在SystemServer里開(kāi)啟拜马,如AMS(ActivityManagerService 四大組件)渗勘、WMS(WindowManagerService 簡(jiǎn)稱(chēng) WMS,一般負(fù)責(zé)界面display)、PMS(PackageManagerService 應(yīng)用的啟動(dòng)卸載)等俩莽。
6.啟動(dòng)桌面
SystemServer啟動(dòng)后會(huì)初始化ActivityManagerService旺坠,同時(shí)加載本地系統(tǒng)服務(wù)庫(kù),調(diào)用createSystemContext()創(chuàng)建系統(tǒng)上下文扮超,創(chuàng)建ActivityThread及各種服務(wù)
WMS的職責(zé):
WMS 是窗口的管理者取刃,它負(fù)責(zé)窗口的啟動(dòng)、添加和刪除出刷。另外窗口的大小和層級(jí)也是由 WMS 進(jìn)行管理的璧疗。
子系統(tǒng)WindowAnimator 來(lái)負(fù)責(zé)動(dòng)畫(huà)
通過(guò)對(duì)窗口的觸摸從而產(chǎn)生觸摸事件,InputManagerService(IMS) 會(huì)對(duì)觸摸事件進(jìn)行處理馁龟,它會(huì)尋找一個(gè)最合適的窗口來(lái)處理觸摸反饋信息崩侠,WMS 是窗口的管理者
窗口不具備繪制功能. Surface 來(lái)供自己繪制,但是Surface 是WMS 來(lái)提供的
AMS用于生命周期的管理 ActivityThread作為AMS的緩存對(duì)象,把曾經(jīng)啟動(dòng)的activity緩存到ActivityThread類(lèi)中的mActivities 集合中