####
Activity的显示原理(Window/DectorView/ViewRoot)
activity.attach 生成个phonewindow
activity.onCrate 生命周期
setContentView 加载布局,会调用phonewindow创建dectorView(FrameLayout),加载布局到dectorView,生成个viewtree ,现在还没有显示
handleResumeActivity onresume 之后,创建个ViewRootimpl把dectorView 添加到ViewRootImpl,交给ViewRootImpl管理,一个surface 一个ViewRootImpl,ViewRootImpl可以和WMS通信,相互调用
viewRootImpl 触发requestLayout,
Activity的ui刷新机制(Vsync/Choreographer)
requestLayout
scheduleTraversals,会发一个屏障消息,阻塞普通消息,给ui绘制开个绿色通道
下次Vsync信号来的时候触发doTraversals调用
performTraversals,真正执行绘制,第一次会像WMS申请一个surface,有了surface之后接下来绘制就会frameBuffer,之后提交到SurfaceFlinger 合成图像,写到屏幕缓冲区就会显示出来
performMesaure
performLayout
perfromDraw
UI绘制原理(Measure/Layout/Draw)
测量,布局,绘制
Surface原理(Surface/SurfaceFlinger)
ViewRootImpl 第一次绘制的时候会像WMS申请窗口,WMS统一管理所有窗口大小层级