渲染机制完全解析03(数据交给谁管理)

2022-04-08  本文已影响0人  沪漂意哥哥

一. DecorView添加到窗口Window的过程

image.png
1.首先通过Launcher进程的调用触发AMS.startActivity
a.LauncherAcitivity.onListItemClick,触发点击图标事件 image.png
b.Activity.startAcitivityForResult,调用生命周期管理,访问AMS执行生命周期流程 image.png
c.Instrumentation.exeStaratActivity,调用AMS的startActivity image.png
2.由ActivityManager.startActivity触发到ATMS的startActivity函数 image.png
3.ActivityTaskManagerService.startActivity image.png
3.一大堆调用
4.ActivityThread中执行TransacationExecutor中会再执行完callback后调用生命周期的执行 image.png image.png

二. 总结

调用发起在Launcher中,然后调用到AMS中,由AMS中会对当前状态进行设置,而当处理launcherItem的callback之后,会处理生命周期,那么只需要在每个生命周期调用时,去进行下一个生命周期的设置就能完成生命周期调用链条的产生。

三. View添加到Window的时机

1.ActivityThread在handleResumeActivity中会调用到performResumeActivity image.png
2.在之前的Activity.attach中,已经完成了对于WindowManager的创建,在handleResumeActivity后续调用中,执行了wm.addView,将Decor添加到WindowManager进行管理 image.png
3.当前addView被转嫁到WindowManagerGlobal.addView,而WindowManagerGlobal这个类是具体与WMS进行通信的类,这个类中addView则生成了一个ViewRootImpl对象对于view进行管理 image.png
4.ViewRootImple.setView调用requestLayout image.png
5.requstLayout调用scheduleTraversal image.png
6.scheduleTraversal中有一个mChoreographer属性 image.png

四. Choreographer

Choreographer的引入,主要是配合Vsync,给上层app的渲染提供一个稳定的绘制时机,也就是Vsync到来的时候,Choreographer介意接收Vsync信号,统一管理应用的输入,动画,绘制等任务的执行。Android的UI绘制任务将在他的统一指挥下完成。这个是引入Chroeographer的作用。

上一篇下一篇

猜你喜欢

热点阅读