加载过程:
1. 在Activity启动时,在其attach方法中会创建一个关联的PhoneWindow窗口对象,然后activity的setContentView把视图布局传递给PhoneWindow的setContentView,在该方法会创建最顶层视图DecorView,DecorView是一个继承了FrameLayout的ViewGroup,代表了整个应用的界面,通常情况下包含标题和内容两个部分
2. PhoneWindow的setContentView方法的参数代表了用户实现的view,该view会通过LayoutInflater的inflate填充到DecorView的内容中,也就是说,把我们提供的xm布局代表的view放到了DecorView中,这就完成了view的加载
绘制过程:
3. 通过WindowManagerService把DecorView添加到PhoneWindow窗口对象中,作为窗口的顶级view,由ViewRootImpl的performTraverals方法对view进行测量,布局,绘制这三个过程,最终让加载的view显示出来。
Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API,如onKeyEvent, onTouchEvent等, 并维护应用程序的生命周期。每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口。每一个应用程序窗口内部又包含有一个View(DecorView)对象,用来描述应用程序窗口的视图。应用程序窗口视图是真正用来实现UI内容和布局的,也就是说,每一个Activity组件的UI内容和布局都是通过与其所关联的一个Window对象的内部的一个View对象来实现的。
通