要想知道這個問題的答案,咱們須要看一下ActivityStackSupervisor.java這個文件。它是全部Activity的監管者。java
這裏咱們盜用一個圖來理一下:3d
咱們須要理清楚一個邏輯的包含關係便可cdn
1.在AMS中,應用的每一個Activity都有一個對應得ActivityRecord對象來描述記錄;對象
2.咱們常說的棧實際是TaskRecord,裏面有一個ArrayList列表,保存着不少ActivityRecord對象,存放的邏輯順序是後打開的頁面,放在這個列表的後面;blog
3.再往上呢,就是ActivityStack,它有一個ArrayList保存着使用過的TaskRecord對象,變量名稱是mTaskHistory;it
4.而後往上是ActivityDisplay,它裏面也有一個ArrayList,保存着不少ActivityStack對象;io
5.最後一層是ActivityStackSupervisor,裏面有一個裝不少ActivityDisplay對象的SparseArray。class