啟動流程
啟動流程
概念
-
ActivityManagerServices
簡稱AMS,服務(wù)端對象静盅,負(fù)責(zé)系統(tǒng)中所有Activity的生命周期畜伐。 -
ActivityThread
,App的真正入口缸剪。當(dāng)開啟App之后敷鸦,會調(diào)用main()開始運行,開啟消息隊列,即是主線程妒峦。與ActivityManagerServices配合重斑,一起完成Activity的管理工作。 -
ApplicationThread
, 用來實現(xiàn)AMS與ActivityThread之間的交互肯骇。在AMS需要管理相關(guān)Application中Activity的生命周期窥浪。通過ApplicationThread的代理對象與ActivityThread通訊。 -
ApplicationThreadProxy
, 是ApplicationThread在服務(wù)器的代理笛丙,負(fù)責(zé)和客戶端的ApplicationThread通訊漾脂。AMS就是通過該代理 -
Instrumentation
, 每一個應(yīng)用程序只有一個Instrumentation對象,每個Actvity內(nèi)都有對該對象的引用胚鸯。 Instrumentation可以理解為應(yīng)用進(jìn)程的管家符相,ActivityThread要創(chuàng)建或暫停某個Activity時,需要通過Instrumentation
來具體操作蠢琳。 - ActivityStack,Activity在AMS的棧管理镜豹,用來記錄已經(jīng)啟動的Activity的先后關(guān)系傲须,狀態(tài)信息等。通過ActivityStack決定是否需要啟動新的進(jìn)程趟脂。
- ActivityRecord泰讽,ActivityStack的管理對象,每個Activity在AMS對應(yīng)一個* ActivityRecord昔期,來記錄Activity的狀態(tài)以及其他的管理信息已卸。其實就是服務(wù)器端的Activity對象的映像。
- TaskRecord硼一,AMS抽象出來的一個“任務(wù)”的概念累澡,是記錄ActivityRecord的棧,一個“Task”包含若干個ActivityRecord般贼。AMS用TaskRecord確保Activity啟動和退出的順序愧哟。如果你清楚Activity的4種launchMode奥吩,那么對這個概念應(yīng)該不陌生。