一、概念


| 定义 | 作用 | 具体描述 | |
| Activity | 控制器 |
控制生命周期、处理事件 |
管理视图的添加与显示(内部持有一个Window),通过回调与 Window 及 View 进行交互。 不负责视图绘制,通过内部的 Window 承载,它真正代表一个窗口,一个Activity包含一个 Window。 |
| Window | 窗口 | 承载视图的显示 |
Window是一个窗口的抽象概念,Activity实际持有的是其子类 PhoneWindow,PhoneWindow有一个内部类DecorView。 通过 WindowManager 创建 DecorView 来加载 Activity 的布局,并将它交给 ViewRoot 进行视图绘制和其它交互。 |
| DecorView | 顶级ViewGroup | 视图树的根节点 |
是 FrameLayout 的子类,包含了系统定义好的标准窗口框架:一个垂直方向的 LinearLayout,上为标题栏 titlebar、下为内容栏 content。Activity通过 setContent() 设置的布局文件就是被加到内容栏中。 |
|
得到content: ViewGroup content = (ViewGroup)findViewById(android.R.id.content); 得到设置的View: ViewGroup rootView = (ViewGroup) content.getChildAt(0); | |||
| ViewRoot | 连接器 | 链接 WindowManager 和 DecorView、完成View的绘制流程 |
链接作用:与 WMS 通讯,调整窗口大小及布局。 绘制流程:measure、layout、draw。 |
|
在主线程 Activity 对象被创建后,自动将 DecorView 添加到 Window 中并创建 ViewRootImpl 对象: root = new ViewRootImpl(view.getContent(),display); root.setView(view,wparams,panelParentView) |
本文详细解释了AndroidActivity控制器的作用,包括其在应用生命周期中的角色、与Window和DecorView的关系,以及如何通过WindowManager创建和管理视图。重点介绍了DecorView作为内容栏的结构和ViewRoot的连接与绘制流程。
516

被折叠的 条评论
为什么被折叠?



