AMS提供了一個ArrayList mHistory來管理所有的activity蚓耽,activity在AMS中的形式是ActivityRecord谬运,task在AMS中的形式為TaskRecord蔚润,進程在AMS中的管理形式為ProcessRecord。如下圖所示
從圖中我們可以看出如下幾點規(guī)則:
所有的ActivityRecord會被存儲在mHistory管理亥鬓;
每個ActivityRecord會對應(yīng)到一個TaskRecord佩捞,并且有著相同TaskRecord的ActivityRecord在mHistory中會處在連續(xù)的位置;
同一個TaskRecord的Activity可能分別處于不同的進程中字币,每個Activity所處的進程跟task沒有關(guān)系则披;
Activity啟動時ActivityManagerService會為其生成對應(yīng)的ActivityRecord記錄,并將其加入到回退棧(back stack)中洗出,另外也會將ActivityRecord記錄加入到某個Task中士复。請記住,ActivityRecord翩活,backstack阱洪,Task都是ActivityManagerService的對象,由ActivityManagerService進程負責維護菠镇,而不是由應(yīng)用進程維護冗荸。
在回退棧里屬于同一個task的ActivityRecord會放在一起,也會形成棧的結(jié)構(gòu)利耍,也就是說后啟動的Activity對應(yīng)的ActivityRecord會放在task的棧頂