SystemUI状态栏流程

SystemUI 状态栏(Status Bar)模块流程图

基于 frameworks-base-16/packages/SystemUI 源码与 docs/status-bar-data-pipeline.md 绘制。


1. 状态栏整体架构

数据管线 (现代架构)

窗口与视图

核心入口

系统侧

驱动显隐

驱动显隐

IStatusBar / StatusBarManagerService

NotificationManagerService

Connectivity/Telephony/Wifi Service

BatteryService

CommandQueue
(IStatusBar Binder 回调队列)

CentralSurfacesImpl
(状态栏/通知中枢)

StatusBarInitializer
+ StatusBarOrchestrator

StatusBarStateController
(SHADE/KEYGUARD/SHADE_LOCKED)

NotificationShadeWindowController
(状态栏窗口)

PhoneStatusBarView
(顶部栏视图)

NotificationStackScrollLayout
(通知列表)

系统图标管线
wifi/mobile/battery

通知管线
NotifCollection→ListBuilder


2. StatusBarState 状态机

灭屏/上锁

解锁成功(GONE)

锁屏下拉展开通知栏

收起通知栏

解锁

下拉展开QS(仍属KEYGUARD)

SHADE (0)
已解锁,常规通知栏/快捷设置

KEYGUARD (1)
锁屏上,展示锁屏通知

SHADE_LOCKED (2)
锁屏上下拉展开了通知栏

由 StatusBarStateController 维护
驱动通知/QS/时钟等视图布局切换


3. 系统图标数据管线(wifi / mobile,推荐架构)

UI 层

Domain 层 (Interactor)

Data 层 (Repository)

MobileRepositorySwitcher

系统回调/广播
ConnectivityManager
TelephonyManager

WifiRepository /
MobileConnectionsRepository
(暴露 Model 的 StateFlow)

WifiInteractor /
MobileIconsInteractor
(业务逻辑:CBRS过滤/漫游)

WifiViewModel /
MobileIconViewModel
(映射为图标 id/可见性)

ViewBinder
(ViewModel↔View 绑定)

StatusBarIconView
(状态栏图标)

DemoMobileConnectionsRepository


4. 移动信号管线的父子层级(多 SIM 并存)

UI 层

Domain 层

Data 层

MobileConnectionsRepository
(单例:管理所有连接)

MobileConnectionRepository #1
(SIM1 单连接状态)

MobileConnectionRepository #2
(SIM2 单连接状态)

MobileIconsInteractor (单例)

MobileIconInteractor #1

MobileIconInteractor #2

MobileIconsViewModel (单例)

MobileIconViewModel #1

MobileIconViewModel #2


5. 通知数据管线(Notification Pipeline)

Coordinators 注入的 Pluggable

onNotificationPosted/Removed

悬浮通知

NotificationManagerService

NotificationListener
(系统 Binder 回调)

NotifCollection
(NotificationEntry 集合, 处理增删改/生命周期)

ShadeListBuilder
(构建可显示列表)

Filters 过滤器
(隐藏不该显示的)

Promoters 提升器
(子通知提升为顶层)

Sections 分组
(对话/常规/静音…)

Comparators 排序

NotifViewManager / RenderStage
(绑定 View)

NotificationStackScrollLayout
(NSSL 通知列表视图)

NotificationShelf / Row
(单条通知视图)

HeadsUpManager


6. 通知栏下拉展开(Shade Expansion)流程

QuickSettingsNotificationStackScrollLayoutStatusBarStateControllerNotificationShadeWindowControllerPhoneStatusBarView用户QuickSettingsNotificationStackScrollLayoutStatusBarStateControllerNotificationShadeWindowControllerPhoneStatusBarView用户仅显示锁屏可见通知alt[已解锁][锁屏]从顶部下拉扩大窗口/获取焦点上报展开进度(0→1)状态 SHADE, 显示全部通知继续下拉 → 展开 QuickSettings锁屏下拉 → 状态 SHADE_LOCKED上滑收起收缩窗口/释放焦点进度回到 0

7. CommandQueue 事件分发

IStatusBar AIDL

Handler 串行化

StatusBarManagerService
(system_server)

CommandQueue

分发回调

setIcon / removeIcon
系统图标增删

disable(flags)
禁用状态栏功能

animateExpand/CollapsePanels
展开收起面板

showImeSwitcher / setImeWindowStatus

setSystemUiVisibility
沉浸模式

CentralSurfacesCommandQueueCallbacks

CentralSurfacesImpl 执行


以上基于源码静态分析。系统图标管线(wifi/mobile)已迁移至 Repository/Interactor/ViewModel 推荐架构;旧的 NetworkController/SignalController 已被替换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值