01
WindowManager 初探
什么是 WindowManager?核心职责与 Android 需要它的原因。
概念入门
02
Window 的概念与分类
应用窗口、子窗口、系统窗口的区别与使用场景。
分类基础
03
WindowManager 的获取方式
getSystemService、Context 与 Activity 中的不同获取路径。
API路径
04
WindowManager.LayoutParams 详解
type、flags、token、gravity 等核心参数。
参数配置
05
Window Type 深度解析
FIRST_APPLICATION_WINDOW 到 LAST_SYSTEM_WINDOW 层级划分。
层级系统
06
Window Flag 实战
FLAG_NOT_FOCUSABLE、FLAG_KEEP_SCREEN_ON、FLAG_TRANSLUCENT 等常用 Flag。
Flag实战
07
Token 机制
为什么需要 Token?Token 的生成与传递流程。
安全机制
08
addView 流程源码分析
从应用层到 WMS 的完整调用链路。
源码添加
09
removeView 流程源码分析
视图移除的完整生命周期。
源码移除
10
updateViewLayout 流程源码分析
动态更新窗口属性的内部机制。
源码更新
11
WindowManagerService 核心架构
WMS 的启动、职责与关键成员变量。
架构WMS
12
WMS 中的窗口排序
Z-Order 的计算逻辑与 Layer 分配。
排序Z-Order
13
WMS 中的输入事件分发
Window 与 InputDispatcher 的关联。
输入事件
14
WMS 中的动画机制
窗口切换动画、启动动画的原理。
动画WMS
15
WMS 中的权限管理
SYSTEM_ALERT_WINDOW 权限的申请与校验。
权限悬浮窗
16
ViewRootImpl 的角色
它是如何连接 WindowManager 与 View 的?
桥梁核心
17
ViewRootImpl 的 performTraversals
测量、布局、绘制的触发时机。
遍历绘制
18
Surface 与 SurfaceFlinger
Window 的绘制表面是如何创建的?
Surface渲染
19
Window 的跨进程通信
Binder 在 WindowManager 体系中的作用。
IPCBinder
20
悬浮窗实现实战
从零实现一个可拖拽的悬浮球。
实战悬浮球
21
系统级悬浮窗
TYPE_SYSTEM_ALERT 与 TYPE_APPLICATION_OVERLAY 的区别。
系统悬浮窗
22
Dialog 的 Window 机制
Dialog 的 Window 是如何附着到 Activity 上的?
Dialog附着
23
PopupWindow 的 Window 机制
PopupWindow 与 Dialog 的本质区别。
Popup对比
24
Toast 的 Window 机制
Toast 的显示与隐藏是如何通过 WMS 实现的?
ToastWMS
25
Activity 的 Window 创建流程
从 startActivity 到 onResume 的窗口创建过程。
Activity启动
26
多窗口模式下的 Window 管理
分屏、自由窗口模式下的窗口调整逻辑。
多窗口分屏
27
Window 泄漏问题排查
常见的 WindowLeaked 异常原因与解决方案。
泄漏排查
28
WindowManager 的性能优化
减少 addView 次数、合理使用 Flag。
优化性能
29
WindowManager 在 Jetpack Compose 中的适配
Compose 如何与 Window 交互?
Compose适配
30
WindowManager 的未来
Android 14/15 中的新特性与 WindowManager 的演进方向。
新特性展望