从 android.view.ViewRootImpl.TraversalRunnable.run::: 到 android.view.View.onMeasure::int,int:
函数栈
onMeasure的函数栈:
- android.view.ViewRootImpl.TraversalRunnable.run:::
- android.view.ViewRootImpl.doTraversal:::
- android.view.ViewRootImpl.performTraversals:::
- android.view.ViewRootImpl.measureHierarchy::View,WindowManager.LayoutParams,Resources,int,int:
- android.view.ViewRootImpl.performMeasure::int,int:
- android.view.View.measure::int,int:
- android.view.View.onMeasure::int,int:
其中在调用了android.view.ViewRootImpl.measureHierarchy之后, android.view.ViewRootImpl.performTraversals又调用了android.view.ViewRootImpl.performMeasure
onLayout的函数栈:
- android.view.ViewRootImpl.TraversalRunnable.run:::
- android.view.ViewRootImpl.doTraversal:::
- android.view.ViewRootImpl.performTraversals:::
- android.view.ViewRootImpl.performLayout::WindowManager.LayoutParams,int,int:
- android.view.View.layout::int,int,int,int:
- android.view.View.onLayout::boolean,int,int,int,int:
其中android.view.ViewRootImpl.performLayout::WindowManager.LayoutParams,int,int:中还调用了android.view.ViewRootImpl.measureHierarchy::View,WindowManager.LayoutParams,Resources,int,int:,android.view.View.layout::int,int,int,int:中还调用了android.view.View.onMeasure::int,int:
onMeasure的调用栈
- android.view.ViewRootImpl.TraversalRunnable.run:::
- android.view.ViewRootImpl.doTraversal:::
- android.view.ViewRootImpl.performTraversals:::
- android.view.ViewRootImpl.performDraw:::
- android.view.ViewRootImpl.draw::boolean:
- android.view.ViewRootImpl.drawSoftware::Surface,AttachInfo,int,int,boolean,Rect:
- android.view.View.draw::Canvas:
- android.view.View.onDraw::Canvas:
我们依据这个图来决定读源码的顺序。