我们知道了view的添加初始化过程后,接下来继续了解一下view的绘制流程
view的绘制入口是从ActivityThread这个类里面开始的,里面有个handleMessage的handle回调,从里面可以看到LAUNCH_ACTIVITY(不同的版本系统源码可能不一样)下调用了handleLaunchActivity方法
DecorView添加到窗口window的过程:
ActivityThread: handleResumeActivity()
WindowManagerImpl: addView()
WindowManagerGlobal: addView()
ViewRootImpl: setView()
ViewRootImpl: requestLayout()
ViewRootImpl: scheduleTraversals()
ViewRootImpl: doTraversal()
ViewRootImpl: performTraversals()
--> view的绘制流程
顺序图如下:
graph LR
handleResumeActivity-->addView
addView --> setView
setView-->requestLayout
requestLayout --> scheduleTraversals
scheduleTraversals --> doTraversal
doTraversal --> performTraversals
performTraversals --> view绘制流程
在performTraversals后,view绘制流程:
graph LR
performMeasure --> performLayout
performLayout --> performDraw
网友评论