ActivityStackSupervisor,顾名思义,就是用来管理ActivityStack的。
ActivityStackSupervisor.java:
/** The stack containing the launcher app */
private ActivityStack mHomeStack;
/** The non-home stack currently receiving input or launching the next activity. If home is
* in front then mHomeStack overrides mFocusedStack.
* DO NOT ACCESS DIRECTLY - It may be null, use getFocusedStack() */
private ActivityStack mFocusedStack;//当前焦点
/** All the non-launcher stacks */
private ArrayList<ActivityStack> mStacks = new ArrayList<ActivityStack>();
一个ActivityRecord对应一个Activity,保存了一个Activity的所有信息;但是一个Activity可能会有多个ActivityRecord,因为Activity可以被多次启动,这个主要取决于其启动模式。
一个TaskRecord由一个或者多个ActivityRecord组成,这就是我们常说的任务栈,具有后进先出的特点。
一个应用可能有多个TaskRecord
ActivityStack则是用来管理TaskRecord的,包含了多个TaskRecord。
/**
* State and management of a single stack of activities.
*/
final class ActivityStack {
//----
}
作者:四月葡萄
参考:https://www.jianshu.com/p/94816e52cd77
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。