桌面模式:窗口化桌面如何组织
2026/8/9大约 3 分钟大屏/折叠屏/自由窗口Android 14桌面模式Taskbar多窗口
桌面模式:窗口化桌面如何组织
上一章看了 Freeform。这一章回答:桌面模式是什么,Taskbar 如何组织任务,多个窗口 如何共存,应用需要满足什么条件?
桌面模式依赖任务组织与可调整窗口
| 常见误解 | 正确理解 |
|---|---|
| 桌面模式 = 手机放大 | 桌面模式是窗口化桌面:Taskbar + 多窗口 + 键盘鼠标 |
| 所有应用都能窗口化 | 需要应用可调整大小,固定方向/不可缩放的应用体验差 |
| 桌面模式只有厂商有 | AOSP 在大屏方向持续推进窗口化与 Taskbar |
核心结论
- 桌面模式由 Taskbar、窗口化任务与输入模型共同构成。
- Taskbar 负责任务展示、启动与切换。
- 窗口以 Freeform/Task 形式组织,可移动缩放。
- 应用需可调整大小并适配窗口化布局。
- 厂商桌面模式在 AOSP 基础上扩展,交互有差异。
桌面模式主链
逐步解释:
- 进入:大屏/外接显示触发桌面布局。
- 任务栏:展示与切换任务。
- 窗口化:应用以可缩放窗口运行。
- 共存:多窗口并行。
- 输入:键盘鼠标支持。
应用适配要求
| 要求 | 说明 |
|---|---|
| 可调整大小 | 不锁定方向与固定尺寸 |
| 响应尺寸变化 | Configuration 变化后重新布局 |
| 支持多窗口 | 窗口切换、最小化状态正确 |
| 输入适配 | 鼠标/键盘交互可用 |
桌面模式下“全屏假设”是最大问题:写死全屏、固定布局的应用在窗口化后会错乱。
源码证据
阅读目标:确认 Taskbar 与窗口化入口。
正文指针:packages/apps/Taskbar/(或 SystemUI 内 Taskbar);窗口化任务由 WindowOrganizer 管理。
packages/apps/Taskbar/ # Taskbar 应用这段代码证明: Taskbar 是独立系统应用,负责任务组织;窗口本身仍由 WMS/Task 管理,应用侧只需满足可调整大小与响应变化。
验证与排障
环境:大屏设备、模拟器或外接显示;部分能力与设备相关。
adb shell dumpsys activity activities | grep -iE "windowingMode|task"
adb shell dumpsys window windows | grep -iE "freeform|bounds"
adb shell wm size 2560,1440先确认窗口模式与任务结构,再看窗口 bounds。桌面模式布局错乱时,检查应用是否 可调整大小、是否响应 Configuration。
常见误区
- “桌面模式是分辨率问题”:是交互模型变化。
- “所有应用天然适配”:需要可调整大小。
- “Taskbar 只是快捷栏”:承担任务组织与切换。
- “厂商桌面与 AOSP 一样”:各有扩展差异。
延伸问题
- Taskbar 在 AOSP 与 SystemUI 中的位置是什么?
- 桌面模式如何与 Freeform 协作?
- 外接显示器与主屏的窗口如何分配?
- 厂商桌面模式的定制边界在哪里?
源码入口
| 文件 | 关键位置 | 作用 |
|---|---|---|
packages/apps/Taskbar/ | Taskbar | 任务组织 |
WindowOrganizer.java | 窗口化 | 窗口管理 |
WindowConfiguration.java | 模式 | 形态 |
wm size | 命令行 | 模拟大屏 |
公共路径:packages/apps/Taskbar/ 与 frameworks/base/services/core/java/com/android/server/wm/。行号以 r75 检索为准。
设备形态变化带来的窗口重建,见 折叠屏与 Configuration。