这一节的内容在WMCore中,主要是创建Transition,初始化其状态为PENDING。
还是我们之前说的,我们以在Launcher界面点击App图标启动某个App为例,来分析Transition的一般流程。启动Activity的流程,在ActivityStarter.startActivityUnchecked中:
具体的调用堆栈为:
ActivityStarter.startActivityUnchecked的主要内容为:
1)、首先调用TransitionController.createAndStartCollecting方法创建一个类型为TRANSIT_OPEN的Transition对象。
2)、将当前启动的ActivityRecord收集到刚刚创建的Transition对象中。
3)、调用ActivityStarter.startActivityInner去走具体的启动Activity流程。
4)、最后在ActivityStarter.handleStartResult中,调用TransitionController.requestStartTransition来启动动画。
在这一节中我们只分析和创建Transition相关的部分,即TransitionController.createAndStartCollecting的内容,余下的部分在其它章节中再进行分析。
首先创建相应类型的一个Transition对象。
能看到创建Transition的地方还是挺多的:
然后Transition的初始状态就是STATE_PENDING,不需要额外去设置(也没有额外的地方去设置,毕竟Transition用完之后就不用了,不存在循环利用的情况):
这一节的内容还是比较简单的,在WMCore侧,根据动画的类型创建相应的Transition对象,Transition的初始状态为STATE_PENDING。