view中所有invalidate()/requestLayout()等请求重绘的操作,最终都会表现在ViewRootImpl#performTraversals()中。
从invalidate()入手
invalidate()
--> ViewRootImpl#scheduleTraversals()
--> ViewRootImpl#Choerographer.postCallback(TraversalsRunnable) // TraversalsRunnable封装了doTraversals()方法,doTraversal()方法又执行了performTraversals()方法。 performTraversals()方法会执行performMeasuer performLayout performDraw等操作,也就是重绘的基本操作。
--> Choerographer#postCallbackDelayed(TraversalsRunnable)
--> Choerographer#postCallbackDelayedInternal(TraversalsRunnable)
-