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。

参考

相关推荐
安东尼肉店7 小时前
Android compose屏幕适配终极解决方案
android
2501_916007477 小时前
HTTPS 抓包乱码怎么办?原因剖析、排查步骤与实战工具对策(HTTPS 抓包乱码、gzipbrotli、TLS 解密、iOS 抓包)
android·ios·小程序·https·uni-app·iphone·webview
feiyangqingyun8 小时前
基于Qt和FFmpeg的安卓监控模拟器/手机摄像头模拟成onvif和28181设备
android·qt·ffmpeg
用户20187928316712 小时前
ANR之RenderThread不可中断睡眠state=D
android
煤球王子12 小时前
简单学:Android14中的Bluetooth—PBAP下载
android
小趴菜822712 小时前
安卓接入Max广告源
android
齊家治國平天下12 小时前
Android 14 系统 ANR (Application Not Responding) 深度分析与解决指南
android·anr
ZHANG13HAO12 小时前
Android 13.0 Framework 实现应用通知使用权默认开启的技术指南
android
【ql君】qlexcel12 小时前
Android 安卓RIL介绍
android·安卓·ril
写点啥呢13 小时前
android12解决非CarProperty接口深色模式设置后开机无法保持
android·车机·aosp·深色模式·座舱