Files
mkdocs/docs/android面试/系统原理/WMS原理.md
2026-01-15 11:53:37 +08:00

2.2 KiB
Raw Blame History

WMS原理

目录


WMS架构

WMS 简介

// WMSWindow 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源码分析

关键类

// WindowManagerServiceWMS 主类
// WindowState窗口状态
// WindowToken窗口令牌
// DisplayContent显示内容

关键方法

// addWindow():添加窗口
// removeWindow():移除窗口
// relayoutWindow():重新布局窗口

面试常见问题

Q1: WMS 的作用?

答案:

  • 管理所有窗口
  • 管理窗口层级
  • 处理窗口动画
  • 分发输入事件

Q2: 窗口类型?

答案:

  1. APPLICATION应用窗口
  2. SUB_WINDOW子窗口
  3. SYSTEM_WINDOW系统窗口

Q3: 窗口层级?

答案:

  • 系统窗口:最高
  • 应用窗口:中等
  • 子窗口:最低

最后更新2024年