1.ActivityManagerServices狸臣,簡(jiǎn)稱AMS莹桅,服務(wù)端對(duì)象,負(fù)責(zé)系統(tǒng)中所有Activity的生命周期
2.ActivityThread固棚,App的真正入口统翩。當(dāng)開啟App之后仙蚜,會(huì)調(diào)用main()開始運(yùn)行此洲,開啟消息循環(huán)隊(duì)列,這就是傳說(shuō)中的UI線程或者叫主線程委粉。與ActivityManagerServices配合呜师,一起完成Activity的管理工作
3.ApplicationThread,用來(lái)實(shí)現(xiàn)ActivityManagerService與ActivityThread之間的交互贾节。在ActivityManagerService需要管理相關(guān)Application中的Activity的生命周期時(shí)汁汗,通過(guò)ApplicationThread的代理對(duì)象與ActivityThread通訊。
4.ApplicationThreadProxy栗涂,是ApplicationThread在服務(wù)器端的代理知牌,負(fù)責(zé)和客戶端的ApplicationThread通訊。AMS就是通過(guò)該代理與ActivityThread進(jìn)行通信的斤程。
5.Instrumentation角寸,每一個(gè)應(yīng)用程序只有一個(gè)Instrumentation對(duì)象,每個(gè)Activity內(nèi)都有一個(gè)對(duì)該對(duì)象的引用忿墅。Instrumentation可以理解為應(yīng)用進(jìn)程的管家扁藕,ActivityThread要?jiǎng)?chuàng)建或暫停某個(gè)Activity時(shí),都需要通過(guò)Instrumentation來(lái)進(jìn)行具體的操作疚脐。
6.ActivityStack亿柑,Activity在AMS的棧管理,用來(lái)記錄已經(jīng)啟動(dòng)的Activity的先后關(guān)系棍弄,狀態(tài)信息等望薄。通過(guò)ActivityStack決定是否需要啟動(dòng)新的進(jìn)程疟游。
7.ActivityRecord,ActivityStack的管理對(duì)象痕支,每個(gè)Activity在AMS對(duì)應(yīng)一個(gè)ActivityRecord乡摹,來(lái)記錄Activity的狀態(tài)以及其他的管理信息。其實(shí)就是服務(wù)器端的Activity對(duì)象的映像采转。
8.TaskRecord聪廉,AMS抽象出來(lái)的一個(gè)“任務(wù)”的概念,是記錄ActivityRecord的棧故慈,一個(gè)“Task”包含若干個(gè)ActivityRecord板熊。AMS用TaskRecord確保Activity啟動(dòng)和退出的順序。如果你清楚Activity的4種launchMode察绷,那么對(duì)這個(gè)概念應(yīng)該不陌生