主要观点总结
本文介绍了Android中Window、DecorView、PhoneWindow、WindowManager、WindowManagerGlobal等类及其作用,解释了这些类在Android应用中的功能和相互之间的关系。文中指出,Window类实际上是一个封装类,主要用于帮助开发者在Activity/Dialog中更方便快捷地添加显示View,并提供了不同特性的窗口;DecorView作为窗口中整个View层级最顶层的View,负责“装饰”navigation bar和status bar,以及contentRoot;PhoneWindow是Window类的唯一子类,实现了Window类中的一些方法,并生成不同特性的窗口;WindowManager和Window类没有直接关系,而是通过WindowManagerGlobal类与WindowManagerService进行交互,实现添加、更新和移除View的功能。
关键观点总结
关键观点1: Window类的作用
Window类是一个封装类,帮助开发者在Activity/Dialog中更方便快捷地添加显示View,并提供了不同特性的窗口。
关键观点2: DecorView的作用
DecorView是窗口中整个View层级最顶层的View,负责“装饰”navigation bar和status bar,以及contentRoot。
关键观点3: PhoneWindow的作用
PhoneWindow是Window类的唯一子类,实现了Window类中的一些方法,并生成不同特性的窗口。
关键观点4: WindowManager和Window类的关系
WindowManager和Window类没有直接关系,而是通过WindowManagerGlobal类与WindowManagerService进行交互,实现添加、更新和移除View的功能。
关键观点5: WindowManagerGlobal的作用
WindowManagerGlobal类在一个进程中只存在一个实例,通过其方法实现与WindowManagerService的交互,管理View的添加、更新和移除。
文章预览
本文摘要 通过本文您可以了解PhoneWindow,Window,DecorView,WindowManager,WindowManagerImpl,WindowManagerGlobal这些类及它们的作用。(文中代码基于Android13) 1 “名不符实”的Window类 1.1 Window类不是真正的窗口 Window这个类是一个让人很迷惑的类,在我刚接触这个类的时候,看到它的名字我非常确信它就是一个“名符其实”的 窗口 。还有与它有关系的WindowManager,WindowManagerImpl这两个类,当看到这两个类的时候立马让我想到了WindowManagerService这个类,WindowManagerService作为一个服务运行在系统进程中管理所有的窗口,我天真的认为WindowManager和WindowManagerImpl就是与WindowManagerService相对应的类是提供与WindowManagerService进行binder通信的类。 当看了源码以后,我才发现上面的观点完全有问题,首先Window类它是”名不符实“,为什么这样说呢?Window类中没有measure(测量)相关方
………………………………