Activity、PhoneWindow、DecorView、ViewRootImpl 之间的关系
PhoneWindow:是Activity和View交互的中间层,帮助Activity管理View。
DecorView:是所有View的最顶层View,是所有View的parent。
ViewRootImpl:用于处理View相关的事件,比如绘制,事件分发,也是DecorView的parent。
四者的创建时机?
Activity创建于performLaunchActivity方法中,在startActivity时候触发。
PhoneWindow,同样创建于performLaunchActivity方法中,再具体点就是Activity的attach方法。
DecorView,创建于setContentView->PhoneWindow.installDecor。
ViewRootImpl,创建于handleResumeActivity方法中,最后通过addView被创建。
View的第一次绘制发生在什么时候?
第一次绘制就是发生在handleResumeActivity方法中,通过addView方法,创建了ViewRootImpl,并调用了其setView方法。
最后调用到requestLayout方法开始了布局、测量、绘制的流程。