Android Framework 面试系列(五)Window

Window 是什么

Window 是 Android 中窗口的宏观定义,主要是管理 View 的创建,以及与 ViewRootImpl 的交互,将 Activity 与 View 解耦。Window 分三种类型,对应着三种层级,如下表所示:

Window 类型 层级范围 说明
应用Window 1 ~ 99 对应着一个 Activity
子 Window 1000 ~ 1999 不能单独存在,需要附属在特定的 Window 之中,例如常见的 PopupDialog,就是子 Window。
系统 Window 2000 ~ 2999 需要声明权限才能创建的 Window例如 Toast 和 系统状态栏这些都是系统的 Window

需要注意,Window 分层的目的是在显示时层级高的会覆盖层级低的窗口。

Window 和 Activity 的关系

应用 Window 表示类是 PhoneWindow,其继承于Window。在应用中,一个 Activity 对应 一个 PhoneWindow。它们的关系如下图所示:

可以看到一个 Activity 对应一个 Window 也就是 PhoneWindow,一个 PhoneWindow 持有一个 DecorView 的实例,DecorView 本身是一个 FrameLayout。

PhoneWindow 的创建和显示流程

完整的 View 显示流程如下图所示:

可以看到,PhoneWindow 是由 Activity 的 attach 方法创建的。在创建完成后,通过 ViewRootImpl 的 setView 方法来往 WindowManagerService 添加 Window。

参考

相关推荐
杉氧1 小时前
RN 性能调优指南:重渲染(Re-renders)控制与长列表(FlatList)优化
android·前端·react native
Coffeeee1 小时前
claude-video 一个让你的Agent拥有看视频能力的Skill
android·人工智能·aigc
菜鸟~noob2332 小时前
【电子战】第07篇:多普勒测向【含matlab代码】
android·开发语言·matlab
样子20182 小时前
Js 之根据白名单过滤 HTML(防止 XSS 攻击)
android·前端·javascript·html·xss
InsightCore2 小时前
别再往 Skill 里塞一切:我们如何重新思考 AI Debug Engineer
android·debug
Kapaseker3 小时前
写过 4000 行 ViewModel 后,我开始这样拆 Compose 页面
android·kotlin
恋猫de小郭3 小时前
ADB Wi-Fi 2.0 ,Android 17 把无线调试的连接链路重新做了一遍
android·前端·flutter
亿是守候 & 亿是承诺3 小时前
第二章 控制系统的数学模型
android
Carson带你学Android4 小时前
ADK for Kotlin:Google 官方 AI Agent 教程来了
android·agent·ai编程
一航jason15 小时前
Android平台推理框架及试用场景模型对比
android·人工智能·ai·架构·ai编程·llama