专栏名称: 鸿洋
你好,欢迎关注鸿洋的公众号,每天为您推送高质量文章,让你每天都能涨知识。点击历史消息,查看所有已推送的文章,喜欢可以置顶本公众号。此外,本公众号支持投稿,如果你有原创的文章,希望通过本公众号发布,欢迎投稿。
目录
相关文章推荐
郭霖  ·  Android ... ·  昨天  
stormzhang  ·  来自李子柒的压迫感 ·  6 天前  
今天看啥  ›  专栏  ›  鸿洋

一文搞懂Window、PhoneWindow、DercorView、WindowManager

鸿洋  · 公众号  · android  · 2024-11-18 08:35

主要观点总结

本文介绍了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(测量)相关方 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览