????????PhoneWindow是什么时候创建的??
????????DectorView?是什么?
????????DectorView?是什么时候创建的?
????????ViewRootImpl是什么?
????????ViewRootImpl?是何时创建的?
????????DectorView?什么时候被添加到Window?
回答上面问题之前,先介绍下Activity的创建和?OnResume?生命周期,了解这两条线,上面的问题迎刃而解!
1.? 启动Activity
?
?
?
ViewRooImpl?是什么?
ViewRootImpl?是?DecorView?的?parent,但是他并不是一个真正的?View,只是继承了?ViewParent?接口,用来掌管?View?的各种事件,包括?requestLayout、invalidate、dispatchInputEvent?等等。
?
Window:每个Activity都会创建一个Window用于承载View视图的显示,Window是一个抽象类,存在了一个唯一实现类PhoneWindow。
DecorView:最顶层的View,是一个FrameLayout子类,最终会被加载到Window当中,它内部只有一个垂直方向的LinearLayout分为两部分:
TitleBar:屏幕顶部的状态栏
ContentView:Activity对应的XML布局,通过setContentView设置到DecorView中。
?
在Activity?创建时,Activity.attach?方法里创建了PhoneWindow?并且设置了WindowManager(setWindowManager)
注意以下顺序:
?
因此,一开始问题的答案:
?
?