CarSystemUI冷启动耗时分析
·

1. 背景说明
- 项目:Android Automotive CarSystemUI
- 测试目标:分析 SystemUI 冷启动耗时
- 测试环境:
- Android 版本: 16
- Trace 工具:Perfetto
2. 测试结果
3. 测试方法
# 1. 查找 SystemUI 进程
ps -A | grep systemui
# 2. 杀掉 SystemUI
kill -9 <systemui_pid>
3. 等待 AMS 自动拉起 SystemUI
4. 冷启动时间定义
4.1 起始时间
定义
SystemUI 主线程创建完成,并首次进入 Running 状态。
Trace 判断依据
- 主线程:
- com.android.systemui
- main
- 状态:
- Running

4.2 结束时间
定义
BottomCarSystemBar 窗口完成最后一次绘制。
即:
- DeckView 容器完成最终刷新
- Window 首次稳定显示
终止时间:最后一次绘制BottomCarSystemBar窗口(即dockerview的容器最后一次刷新)
5. CarSystemUI 启动流程
5.1 SystemUI 进程拉起
SystemServer
↓
startSystemUi()
↓
AMS 拉起 com.android.systemui
↓
Zygote fork SystemUI 进程
5.2 Application 初始化
CarSystemUIApplication.onCreate()
主要流程:
- 初始化 Context
- 初始化 Dagger
- 初始化 SystemUIFactory
- 初始化 Dependency
5.3 Startable 启动
SystemUIApplication.startServicesIfNeeded()
启动核心模块:
| 类名 | 耗时(ms) | 说明 |
|---|---|---|
| CarSystemBar | 47.24 | 车机系统栏管理,负责状态栏、导航栏的创建和管理 |
| KeyGestureDialogStartable | 24.82 | 按键手势对话框启动器,处理手势相关的对话框显示 |
| KeyguardUpdateMonitor | 19.72 | 锁屏状态监控器,跟踪锁屏状态变化并通知相关组件 |
| KeyguardTransitionCoreStartable | 17.78 | 锁屏过渡动画控制器,管理锁屏显示/隐藏的过渡效果 |
| AlternateBouncerViewBinder | 11.55 | 备用解锁界面绑定器,绑定备用解锁UI与数据 |
| DeviceUnlockedInteractor$Activator | 10.32 | 设备解锁交互器激活器,管理设备解锁流程 |
| SystemUIOverlayWindowManager | 10.1 | Overlay窗口管理器,管理系统级Overlay窗口(如通知面板) |
| QSPipelineCoreStartable | 6.49 | 快速设置管道启动器,管理快速设置面板的数据流 |
| CommunalMediaStartable | 4.05 | 共享媒体服务,管理多用户/多显示场景下的媒体播放 |
| ScreenDecorations | 3.79 | 屏幕装饰管理器,处理圆角、刘海屏适配、安全区域等 |
| PowerUI | 3.03 | 电源UI管理器,管理电量显示、低电量提醒等 |
| StatusBarSignalPolicy | 2.83 | 状态栏信号策略,控制信号图标的显示逻辑 |
| ShareToAppChipViewModel | 2.19 | 分享芯片ViewModel,管理分享功能的UI状态 |
| KeyguardViewMediator | 1.81 | 锁屏视图中介,协调锁屏的显示和隐藏 |
| UserSwitcherDialogCoordinator | 1.45 | 用户切换对话框协调器,管理用户切换UI |
| ThemeOverlayController | 1.3 | 主题覆盖控制器,管理系统主题的叠加和应用 |
| OngoingCallInteractor | 1.25 | 进行中通话交互器,管理通话状态和UI显示 |
| ScreenCaptureStartable | 1.22 | 屏幕截图服务,提供截图功能支持 |
| CommunalSuppressionStartable | 1.09 | 共享抑制服务,管理共享资源的抑制状态 |
| DisplayInputSinkController | 1.07 | 显示输入接收器控制器,管理输入事件的接收和分发 |
| QSLargeSpecsCommand | 1.04 | 快速设置大规格命令,处理大屏设备的快速设置 |
| WMShell | 1.03 | WindowManager Shell,窗口管理外壳组件 |
| VolumeUI | 0.89 | 音量UI管理器,管理音量条和音量控制 |
| SystemEventHandler | 0.89 | 系统事件处理器,处理系统级事件 |
| KeyguardNotificationVisibilityProvider | 0.88 | 锁屏通知可见性提供者,控制锁屏上通知的显示 |
| VisualInterruptionDecisionProvider | 0.75 | 视觉中断决策提供者,决定是否显示打断性UI |
| NotificationMemoryMonitor | 0.75 | 通知内存监控器,监控通知内存使用情况 |
| StorageNotification | 0.66 | 存储通知,管理USB存储等相关通知 |
| QSPanelsCoreStartable | 0.63 | 快速设置面板启动器,初始化快速设置面板 |
| NotificationGutsManager | 0.6 | 通知详情管理器,管理通知展开后的详情内容 |
| FeatureFlagsDebugStartable | 0.6 | 特性标志调试服务,管理特性标志的调试功能 |
| NotificationChannels | 0.58 | 通知渠道管理,创建和管理通知渠道 |
| KairosCoreStartable | 0.43 | Kairos核心服务,与面部识别相关 |
| MotionToolStartable | 0.41 | 手势工具服务,提供手势相关工具支持 |
| CommunalDreamStartable | 0.41 | 共享梦境服务,管理多用户场景下的梦境功能 |
| FalsingCoreStartable | 0.41 | 误触检测服务,检测和防止误触操作 |
| RingtonePlayer | 0.36 | 铃声播放器,播放来电、通知等铃声 |
| LowLightBehaviorCoreStartable | 0.33 | 低光行为服务,管理低光环境下的UI行为 |
| KeyguardBiometricLockoutLogger | 0.26 | 锁屏生物识别锁定日志,记录生物识别锁定事件 |
| CommunalSceneTransitionInteractor | 0.24 | 共享场景过渡交互器,管理场景切换动画 |
| SideFpsOverlayViewBinder | 0.24 | 侧边指纹覆盖层绑定器,绑定侧边指纹UI |
| FlagDependencies | 0.23 | 标志依赖管理,管理特性标志之间的依赖关系 |
| NotificationRemoteInputManager | 0.23 | 通知远程输入管理器,处理通知的远程输入 |
| MobileUiAdapter | 0.2 | 移动UI适配器,适配移动设备的UI |
| ClusterDisplayController | 0.18 | 仪表盘显示控制器,管理仪表盘区域的显示 |
| ScreenRecordingCoreStartable | 0.17 | 屏幕录制服务,提供屏幕录制功能支持 |
| SessionTracker | 0.16 | 会话追踪器,追踪SystemUI会话状态 |
| DevicePosturingListener | 0.15 | 设备姿态监听器,监听设备姿态变化 |
| LetterboxBackgroundProvider | 0.15 | 信箱背景提供者,提供信箱模式的背景 |
| AuthController | 0.15 | 认证控制器,协调生物识别认证流程 |
| NotificationSettingsRepository | 0.14 | 通知设置仓库,管理通知相关设置 |
| NotificationRebindingTrackerModule | 0.12 | 通知重新绑定追踪模块,追踪通知重新绑定 |
| LockscreenSceneTransitionInteractor | 0.12 | 锁屏场景过渡交互器,管理锁屏场景切换 |
| CarToastUI | 0.11 | 车机Toast UI,管理Toast消息显示 |
| CommunalAppWidgetHostStartable | 0.11 | 共享应用组件宿主服务,管理共享AppWidget |
| OnboardingAffordanceCommands | 0.1 | 引导提示命令,管理新用户引导提示 |
| CommunalMetricsStartable | 0.1 | 共享指标服务,收集和上报共享指标 |
| Recents | 0.09 | 最近任务管理,管理最近使用的应用列表 |
| UnfoldInitializationStartable | 0.08 | 展开初始化服务,处理折叠屏展开初始化 |
| SysuiStatusBarStateController | 0.07 | 状态栏状态控制器,管理状态栏状态 |
| CarProfileIconUpdater | 0.07 | 车机用户头像更新器,更新用户头像 |
| DisplayWindowPropertiesRepository | 0.07 | 显示窗口属性仓库,管理显示窗口属性 |
| LightBarController | 0.07 | 灯条控制器,管理灯条的显示和控制 |
| PassengerKeyguardLoadingDialog | 0.07 | 乘客锁屏加载对话框,乘客屏的锁屏加载UI |
| ZenModesCleanupStartable | 0.07 | 禅模式清理服务,清理禅模式相关资源 |
| SecurityControllerStartable | 0.06 | 安全控制器服务,管理安全相关功能 |
| ShadePrimaryDisplayCommand | 0.06 | 下拉面板主显示命令,控制主显示的下拉面板 |
| CommunalLoggerStartable | 0.06 | 共享日志服务,提供共享日志功能 |
| OngoingCallController | 0.06 | 进行中通话控制器,控制通话UI |
| CommunalBackupRestoreStartable | 0.06 | 共享备份恢复服务,管理共享数据的备份恢复 |
| NearbyMediaDevicesManager | 0.05 | 附近媒体设备管理器,管理附近的媒体设备 |
| DreamSuppressionStartable | 0.05 | 梦境抑制服务,控制梦境功能的抑制 |
| ConfigurationControllerStartable | 0.05 | 配置控制器服务,管理系统配置 |
| LowLightMonitor | 0.05 | 低光监控器,监控低光环境 |
| CarSystemUIShellCommandRegisterer | 0.05 | 车机SystemUI Shell命令注册器,注册Shell命令 |
| ShadeDialogContextInteractor | 0.05 | 下拉面板对话框上下文交互器,管理下拉面板对话框 |
| UserFileManagerImpl | 0.05 | 用户文件管理器实现,管理用户文件 |
| StatusBarContentInsetsViewModelStore | 0.04 | 状态栏内容内边距ViewModel存储 |
| LightBarControllerStore | 0.04 | 灯条控制器存储 |
| GrowthCoreStartable | 0.04 | 增长核心服务,与增长相关的功能 |
| MediaMuteAwaitConnectionCli | 0.04 | 媒体静音等待连接客户端 |
| StatusBarNotificationChipsInteractor | 0.04 | 状态栏通知芯片交互器,管理通知芯片 |
| ActivityWindowManager | 0.04 | 活动窗口管理器,管理应用活动窗口 |
| ClearLogBuffersCommand | 0.04 | 清除日志缓冲区命令 |
| StatusBarConfigurationControllerStore | 0.04 | 状态栏配置控制器存储 |
| ExternalDisplayController | 0.04 | 外部显示控制器,管理外部显示设备 |
| MultiDisplayStatusBarWindowControllerStore | 0.03 | 多显示状态栏窗口控制器存储 |
| ComposeTracingStartable | 0.03 | Compose追踪服务,追踪Compose UI性能 |
| ShadeDisplaysDialogInteractor | 0.03 | 下拉面板显示对话框交互器 |
| DeviceProvisioningRepository | 0.03 | 设备配置仓库,管理设备配置信息 |
| BroadcastDispatcherStartable | 0.03 | 广播分发器服务,管理广播的分发 |
| VendorServices | 0.03 | 厂商服务,提供厂商特定功能 |
| CarrierConfigCoreStartable | 0.03 | 运营商配置核心服务,管理运营商配置 |
| CommunalSceneStartable | 0.03 | 共享场景服务,管理共享场景 |
| CommunalOngoingContentStartable | 0.02 | 共享进行中内容服务,管理共享的进行中内容 |
| StatusBarModeRepositoryStore | 0.02 | 状态栏模式仓库存储 |
| SystemEventChipAnimationControllerStore | 0.02 | 系统事件芯片动画控制器存储 |
| StatusBarIconViewBindingFailureTracker | 0.02 | 状态栏图标绑定失败追踪器 |
| FlashlightRepositoryImpl | 0.02 | 手电筒仓库实现,管理手电筒功能 |
| StatusBarContentInsetsProviderStore | 0.02 | 状态栏内容内边距提供者存储 |
| MediaDataProcessor | 0.01 | 媒体数据处理器,处理媒体数据 |
| ScreenPinningRequest | 0.01 | 屏幕固定请求,处理屏幕固定功能 |
| PendingDisplayChangeController | 0.01 | 待处理显示变更控制器 |
| MediaCarouselInteractor | 0.01 | 媒体轮播交互器,管理媒体轮播功能 |
5.4 window创建并刷新

| 窗口类名 | 窗口用途说明 |
|---|---|
| SystemUIOverlayWindow | 通知栏等系统 UI 容器窗口 |
| TopCarSystemBar | 顶部状态栏窗口 |
| BottomCarSystemBar | 底部 docker 栏窗口 |
| HeadsUpNotification | 横幅通知窗口 |
| DisplayBackGestureHandler | 返回手势窗口 |
6. 插件加载

插件加载过程可参考这篇文章:https://blog.csdn.net/congqingbin/article/details/160828767?spm=1001.2014.3001.5501
7. 插件加载后加载插件中的UI元素并刷新

时间范围外:CarKeyguardView展示?目前车机未用到可删除?
[图片]
[图片]
Dmips = 120*660 79200
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)