在这里插入图片描述

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 启动流程

SystemUIOverlayWindowManager KeyguardViewMediator CarSystemBar CoreStartables Dagger CarSystemUIApplication SystemUIService ActivityThread ActivityManager PackageManager SystemServer Zygote SystemUIOverlayWindowManager KeyguardViewMediator CarSystemBar CoreStartables Dagger CarSystemUIApplication SystemUIService ActivityThread ActivityManager PackageManager SystemServer Zygote Stage 1 - SystemServer Boot Stage 2 - Start SystemUI Stage 3 - Create SystemUI Process Stage 4 - Application Create Stage 5 - Dagger Injection Stage 6 - Start CoreStartables Stage 7 - CarSystemBar Init Stage 8 - Overlay Init Stage 9 - Startup Finished fork() create system_server startBootstrapServices() startCoreServices() startOtherServices() getSystemUiServiceComponent() ComponentName() startServiceAsUser() startProcessLocked() fork() create SystemUI process return pid bindApplication() onCreate() onCreate() isSecondaryMUMDSystemUI() initialize() create SysUIComponent inject dependencies startCoreStartables() start() start() start() start others createSystemBar() buildNavBarWindows() buildNavBarContent() attachNavBarWindows() init() attach() startup completed Android Automotive SystemUI Startup Flow

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://i-blog.csdnimg.cn/direct/2bf0b0f6953b4cb2a27f553b4e2bd32b.png
插件加载过程可参考这篇文章:https://blog.csdn.net/congqingbin/article/details/160828767?spm=1001.2014.3001.5501

7. 插件加载后加载插件中的UI元素并刷新

在这里插入图片描述

时间范围外:CarKeyguardView展示?目前车机未用到可删除?
[图片]

[图片]
Dmips = 120*660 79200

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐