1. 基础原理
1.1 ActivityRecord、TaskRecord、ActivityStack关系
一个ActivityRecord对应着一个Activity,而一个Activity可能对应着不同的ActivityRecord(因为Activity可能被实例化多次)。一系列的ActivityRecord存在于TaskRecord(一个Task就是用户体验上的一个“应用”,它将相关的Activity组合在一起,以ArrayList存储),而一系列TaskRecord存在于ActivityStack。ActivityStackSupervisor是用来管理这些ActivityStack的。
ActivityRecord对应Activity的三种类型:
static final int APPLICATION_ACTIVITY_TYPE = 0;//普通应用类型
static final int HOME_ACTIVITY_TYPE = 1;//桌面类型
static final int RECENTS_ACTIVITY_TYPE = 2;//最近任务类型
ActivityStack有五种静态栈:
0 HOME_STACK_ID //Home应用以及recents app所在的栈
1 FULLSCREEN_WORKSPACE_STACK_ID //一般应用所在的栈
2 FREEFORM_WORKSPACE_STACK_ID //类似桌面操作系统
3 DOCKED_STACK_ID //分屏的应用所在的栈
4 PINNED_STACK_ID //画中画栈
1.2 为什么要定义多个ActivityStack?
ActivityStack主要用