点击上方“IT烂笔头”,选择“置顶公众号”
第一时间获取 IT 技术干货!

阅读文本大概需要 15 分钟。
上一文中主要分析了整个Android图形子系统的整体运作流程,本节我们将探索运作流程中的一些关键类创建的时机,从而更好的理解这个过程,以及分析其中的设计逻辑。

























①简单类的创建时机
- DecorView
-
-
- DecorView在
Activity.setContentView()调用时由PhoneWindow同步创建,作为承载应用主题框架和用户布局的顶级容器。
- DecorView在
-

-
- 此时 DecorView 尚未显示
:其可见性需等待
Activity.onResume()后通过WindowManager.addView()与ViewRootImpl绑定完成绘制流程。 - 主题决定结构:
DecorView的布局因主题而异(如全屏/带标题栏),由
generateLayout()动态选择系统资源。
- 此时 DecorView 尚未显示
- PhoneWindow
-
- Activity

- Activity
PhoneWindow 在 Activity.attach() 方法中同步创建,作为 Activity 的窗口代理,负责管理窗口样式、事件回调和视图层级。
-
- Dialog

- Dialog
【过期的版本】Android 6.0之前,Dialog通过 PolicyManager.makeNewWindow() 创建 PhoneWindow 对象,具备完整的 DecorView和事件回调能力。
这个在网上很多博客写的还是上面的流程,包括在23、24年的博客,而且用Deepseek等AI去查,结果都是上面的流程,可见AI不是去查最近的源码库,而是基于网上的博客做整理而已。我们去读源码发现,并不是这样,PolicyManager.java早已经被移除了,这个设计因为很少需要扩展被认为是过度抽象设计而增加维护成本,所以从Android 6.0之后,PhoneWindow都是在Dialog和Activity之中直接new来创建,如下:






最低0.47元/天 解锁文章
712

被折叠的 条评论
为什么被折叠?



