1.主线程耗时操作
2.16S一次Vsync信号,是否重绘是否申请了重绘,只有申请了重绘的才会进行重绘.
3.onDraw完之后不会立即刷新,需要等到下次Vsync信号来时,才从缓存中取出图像数据进行刷新。
4.界面没有重绘,屏幕还是会每隔16ms进行刷新,但刷新展示时去获取的图像缓存一直是旧的。
5.不管什么时机发起绘制申请都没关系,都会等到下次Vsync信号来时,才进行绘制
总结回答
1.Vsync
每隔16ms,会发起一起一次vsync信号,当接收到vsnc信号时,view才会进行重绘,如下图所示
2.choreographer
当调用requestLayout 申请刷新UI时,会往choreographer中注入callback,choreographer会像SurfaceFlinger申请接收下一个刷新的Vsync的信息,当屏幕刷新Vsync信号来临时,SurfaceFlinger将通知choreographer,由 choreographer触发requestLayout的callback,当callback触发时将执行重绘.