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 小时前
Android 14 Vehicle HAL (VHAL) 设计与实现深度解析
android·aaos·carservice·车载开发·android 14·vhal·vehicle hal
AFinalStone7 小时前
Android 7系统网络(八)应用API层—ConnectivityManager使用与实战调试
android·网络
plainGeekDev8 小时前
kapt 替换为 KSP
android·java·kotlin
蜡台8 小时前
通过Gradle脚本声明更改Java变量
android·java·开发语言·python·kotlin·gradle·groovy
阿pin11 小时前
Android随笔-SharedPreferences
android·sp
阿pin12 小时前
Android随笔-DataStore
android·datastore
茶栀(*´I`*)13 小时前
Android 测试入门指南:ADB 基础配置与常用设备管理命令解析
android·adb
ihuyigui14 小时前
海外酒店预订短信接口
android·java·运维·服务器·前端·后端·架构
gxgldyh15 小时前
Android Framework源码解析(七):BootAnimation 启动流程解析——开机动画是如何显示出来的?
android
达达尼昂15 小时前
在 Claude Cowork 中用好 Claude Fable 5
android·人工智能·后端