1. 一个Activity包含了一个Window,Window才是真正代表一个窗口.
DecorView是一个顶级View,内部会包含一个竖直方向的LinearLayout,这个LinearLayout有上下两部分,分为titlebar和contentParent两个子元素,contentParent的id是content,而我们自定义的Activity的布局就是contentParent里面的一个子元素。View层的所有事件都要先经过DecorView后才传递给我们的View。
2.Context是上下文:有三个子类:application,activity,service.
许多功能都要用到Context,大部分功能三种context子类都可以用,少部分情况用特定context
getApplication()和getApplicationContext()都是获得application的实例
activity.this是获取当前activity的上下文环境
getContext()返回当前view的上下文环境,通常为当前activity的上下文
3.ContextWrapper是Context的子类
而Activity、Service、Application也都是ContextWrapper的直接子类或间接子类
4.Window是一个抽象类,具体实现是PhoneWindow,创建Window可以通过WindowManager,Window的具体实现在WindowManagerService中, WindowManager和WindowManagerService的交互是一个IPC过程,所有的View都是附加在Window上,Window也是View的直接管理者.
每一个Window都对应着一个View和一个ViewRootImpl,Window和View通过ViewRootImpl来建立联系,Window并不是实际存在的而是以View的形式存在,对Window的访问要通过WindowManager
Window分三类:应用Window,子Window,系统Window
应用层级对应着一个Activity,子Window要附属在特点父Window上,例如一个Dialog就是一个子Window,系统Window要声明权限才能创建,例如Toast和系统状态栏
层级大的覆盖在层级小的上面,层级分别为1-99,1000-1999,2000-2999