要想知道这个问题的答案,咱们须要看一下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