2.2 KiB
2.2 KiB
WMS原理
目录
WMS架构
WMS 简介
// WMS:Window Manager Service
// 管理所有窗口的显示、层级、动画等
// 系统服务,运行在 system_server 进程
WMS 职责
// 1. 窗口管理
// 2. 窗口层级管理
// 3. 窗口动画
// 4. 输入事件分发
// 5. 屏幕旋转
窗口管理
窗口创建
// Activity 创建窗口
// 1. Activity.attach()
// 2. PolicyManager.makeNewWindow()
// 3. Window.setWindowManager()
// 4. WindowManager.addView()
窗口添加
// WindowManager.addView()
WindowManager wm = getWindowManager();
View view = LayoutInflater.from(this).inflate(R.layout.view, null);
WindowManager.LayoutParams params = new WindowManager.LayoutParams();
wm.addView(view, params);
窗口类型
窗口类型
// 1. APPLICATION:应用窗口
WindowManager.LayoutParams.TYPE_APPLICATION
// 2. SUB_WINDOW:子窗口
WindowManager.LayoutParams.TYPE_APPLICATION_PANEL
// 3. SYSTEM_WINDOW:系统窗口
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
WindowManager.LayoutParams.TYPE_TOAST
窗口层级
层级管理
// Z-Order:窗口层级
// 数字越大,层级越高
// 窗口层级:
// 1. 系统窗口:最高
// 2. 应用窗口:中等
// 3. 子窗口:最低
WMS源码分析
关键类
// WindowManagerService:WMS 主类
// WindowState:窗口状态
// WindowToken:窗口令牌
// DisplayContent:显示内容
关键方法
// addWindow():添加窗口
// removeWindow():移除窗口
// relayoutWindow():重新布局窗口
面试常见问题
Q1: WMS 的作用?
答案:
- 管理所有窗口
- 管理窗口层级
- 处理窗口动画
- 分发输入事件
Q2: 窗口类型?
答案:
- APPLICATION:应用窗口
- SUB_WINDOW:子窗口
- SYSTEM_WINDOW:系统窗口
Q3: 窗口层级?
答案:
- 系统窗口:最高
- 应用窗口:中等
- 子窗口:最低
最后更新:2024年