【Android14 ShellTransitions】(二)创建Transition

1,687 阅读1分钟

微信图片_20240313105008.jpg

这一节的内容在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。