第4章 核心模块识别与命名:各模块职责初定

SystemUI 作为 Android 系统界面与用户交互的核心载体,其内部模块的边界清晰度直接影响后续拆分的可行性、可维护性与可测试性。本章围绕 状态栏、导航栏、快捷面板、通知面板、锁屏、音量控制 六大核心模块,从 系统分层、组件职责、数据流/控制流/信任链路、选型权衡、风险点、落地步骤、验收标准 六个维度进行职责初定与边界定义,为后续章节的深度拆分奠定架构基础。

4.1 模块全景与职责定义

下表列出 SystemUI 六大核心模块的 层级归属、职责初定、关键接口类型。注意:职责初定只描述该模块“应当做什么”和“不应当做什么”,暂不涉及具体实现方案。

模块名称层级归属职责初定关键接口类型
状态栏信息展示层显示系统状态(信号、时间、电池、通知图标);提供下拉展开快捷面板的入口;不处理具体业务逻辑,不持有通知详情数据。状态回调、触摸事件、广播监听
导航栏信息展示层提供返回、主页、最近任务三大导航操作;支持手势导航与按键导航切换;不涉及应用内容、不做页面预加载。按键事件、手势回调、策略接口
快捷面板交互控制层承载 WiFi、蓝牙、亮度、飞行模式等快捷开关;支持开关状态同步与即时生效;不持久化设置,不存储用户偏好。设置Provider、开关回调、下拉手势
通知面板交互控制层聚合展示所有应用通知,支持分组、展开、点击、滑动清除等交互;维护通知优先级与渠道分类;不修改通知内容,不发送通知。NotificationManager、触摸事件、内容提供
锁屏安全覆盖层提供解锁认证(PIN/图案/生物识别);在锁定状态下安全展示通知摘要;阻断未授权操作,隔离应用内容;不做系统设置变更。认证回调、通知安全展示、解锁事件
音量控制系统反馈层控制媒体、闹钟、铃声、通话音量通道;显示音量面板并处理用户调节请求;不介入音频路由策略,不管理音频焦点。AudioManager、音量事件、UI刷新
职责初定要点: 每个模块的职责描述必须遵循“一个模块只做一类事”的原则,避免职责交叉。例如状态栏只负责“展示”和“入口”,不承载任何开关操作逻辑;锁屏只负责“安全认证与隔离”,不处理音量或通知详情展示。

4.2 模块边界划分原则

模块边界定义是拆分成功与否的关键。以下四条原则贯穿整个拆分过程:

  • 最小依赖原则: 模块对外部的依赖应最小化,仅通过明确定义的接口进行通信。例如快捷面板只依赖设置 Provider 的读接口,不直接访问系统数据库。
  • 单一职责原则: 每个模块仅承载一类核心职责。导航栏不应包含任何与音量控制相关的逻辑,即使音量键在导航栏附近。
  • 安全隔离原则: 锁屏模块与通知面板之间必须建立安全边界,锁屏状态下通知面板不可泄露通知详情,只能传递“有通知”这一元信息。
  • 交互闭环原则: 用户在一个模块内的操作应尽量在该模块内完成闭环,避免跨模块跳转。例如音量面板的调节操作不应跳转到设置页面。
边界不清的典型风险: 状态栏混合下拉展开逻辑与通知图标管理,会导致后续拆分时出现循环依赖;锁屏与通知面板共用数据模型,会破坏安全隔离,造成通知详情泄露。每个模块的边界必须在初期用文档锁定,避免后期模糊。

4.3 数据流与控制流分析

模块之间的数据流与控制流决定了信任链路的建立方式。下图展示了六大模块之间的 核心交互关系,箭头方向代表控制流或数据流方向,虚线框代表分层边界。

SystemUI 核心模块职责边界与交互关系 信息展示层 交互控制层 系统反馈层 状态栏 信号·时间·电池·通知图标 锁屏 解锁·认证·安全隔离 导航栏 返回·主页·最近任务 快捷面板 WiFi·蓝牙·亮度·开关 通知面板 通知聚合·分组·交互 音量控制 媒体·闹钟·铃声音量 下拉展开 通知摘要传递 音量键事件 通知图标入口 联动 边界原则 1. 状态栏只读展示,不处理业务 2. 锁屏隔离通知详情,不泄露内容 3. 面板共享下拉区域,职责不交叉

图中可归纳出以下关键 数据流与控制流路径:

  • 状态栏 → 快捷面板: 用户下拉状态栏触发快捷面板展开,此为控制流;状态栏不携带数据,仅传递展开信号。
  • 状态栏 → 通知面板: 状态栏展示通知图标,点击图标后控制流跳转至通知面板展示详情;状态栏不缓存通知数据。
  • 锁屏 → 通知面板: 锁屏状态下,通知面板只接收“有通知”的布尔信号,不传递通知内容实体,确保安全隔离。
  • 导航栏 → 音量控制: 物理音量键事件由导航栏捕获后转发至音量控制模块,导航栏不做音量值判断。
  • 快捷面板 ↔ 通知面板: 两者共享下拉区域,存在展开状态联动,但数据模型完全独立,通过事件总线通信。

信任链路分析: 锁屏与通知面板之间的信任等级是最低的——锁屏不信任通知面板能够安全处理通知详情,因此采用“仅传递元信息”的隔离策略。状态栏与快捷面板之间信任等级中等,状态栏信任快捷面板不会滥用展开入口,但状态栏不向快捷面板传递任何敏感数据。导航栏与音量控制之间的信任等级较高,因为两者都属于系统级UI,但导航栏仍不直接操作音量值,仅作为事件转发通道。

4.4 选型权衡与风险点

模块职责初定阶段需要做出若干关键选型权衡,同时识别早期风险:

权衡项方案A方案B推荐理由
状态栏是否包含下拉入口逻辑包含剥离到快捷面板剥离保持状态栏纯展示,避免入口逻辑与展示耦合
锁屏是否展示通知详情展示仅展示“有通知”仅展示元信息安全隔离要求,防锁屏绕过
音量控制是否独立窗口独立窗口内嵌在快捷面板独立窗口音量面板需在任意界面弹出,独立窗口更灵活
快捷面板与通知面板是否共享View共享分离分离职责不同,共享View会导致代码耦合与测试困难 ← 上一章 📖 返回目录 下一章 →