简述DecorView什么时候被WindowManager添加到Window中 ?
参考回答
DecorView
是在 Activity
启动并且窗口被创建时,由 WindowManager
自动添加到 Window
中的。当 Activity
被创建时,系统会为其分配一个窗口,并将 DecorView
作为该窗口的根视图,确保所有的 UI 元素(包括内容视图和系统装饰元素)都被正确地显示。
具体来说,当 Activity
调用 setContentView()
方法时,DecorView
会将应用的视图添加到窗口的内容区域,并且 WindowManager
会将这个 DecorView
视图层次结构加入到窗口中。
详细讲解与拓展
- Window 和 DecorView 的关系:
- 在
Activity
启动的过程中,Window
会被创建。此时,Window
是一个容器,负责管理显示在屏幕上的所有视图。 DecorView
是Activity
窗口中的最外层视图容器,包含了标题栏、内容区域、状态栏等系统 UI 元素。DecorView
会被添加到Window
中作为窗口的根视图。
- 在
- 添加流程:
- 当
Activity
被启动时,系统会通过Window
创建一个新的DecorView
。 - 之后,
WindowManager
会将DecorView
添加到窗口中,作为活动窗口的视图容器。 Activity
通过调用setContentView()
来设置应用的界面内容,这个界面内容会被嵌入到DecorView
中的内容区域(FrameLayout
)。
- 当
- 窗口的创建过程:
- Window 创建:当
Activity
被创建时,Window
会被实例化,通常是PhoneWindow
类,它负责管理DecorView
和其他视图。 - DecorView 创建与添加:
PhoneWindow
会创建一个DecorView
,并将其设置为窗口的根视图。 - 设置内容视图:调用
setContentView()
后,Activity
的 UI 元素会被添加到DecorView
中,通常是通过FrameLayout
承载应用的界面内容。
- Window 创建:当
- 示例代码:
- 当
Activity
启动时,系统自动为其创建Window
和DecorView
: WindowManager
会自动将DecorView
添加到Window
中,确保显示在屏幕上。
- 当
- 修改 DecorView:
- 开发者也可以通过
Window
或Activity
的方法修改或获取DecorView
,例如:
- 开发者也可以通过
总结:
DecorView
会在 Activity
被创建时,由 WindowManager
自动添加到 Window
中。DecorView
作为窗口的根视图容器,承载了 Activity
的界面布局和系统 UI 元素。开发者通常通过 setContentView()
来设置界面内容,而 WindowManager
会确保 DecorView
被正确地添加到窗口中并显示。