Android14的SystemUI启动流程

先从AndroidManifest.xml文件开始分析:SystemUIApplication是Application,PhoneSystemUIAppComponentFactory是Component

System_server中,会拉起SystemUI,调用到Manifest注册的service

这时候,会调用到刚才的SystemUIApplication,在应用启动就会创建Application的声明周期

Android14版本中,SystemUI对所有的service都设置为CoreStartable,即所有的service都继承实现了CoreStartable

Application构建完成,我们看如何调用startServicesIfNeeded

调用到这里,继承CoreStartable的类,比如statusbar,就会启动start方法

下面的CentralSurfacesImpl 287行的代码,就是启动statusBar的类

稍微看一下statusBarstart方法,里面有获取锁屏控制器、创建底部导航栏、注册各种回调、

广播的相关逻辑。

到此,这段代码算走完整。

scss 复制代码
((SystemUIApplication) getApplication()).startServicesIfNeeded()

看其余的启动流程,基本就是dump相关的错误,开启监听,开启新的dump service。

到这里,SystemUI的服务启动完成。

这里面难点在于谷歌创建了大量的dagger,使用了控制反转的设计模式,很多的module、inject、binds、provide找起来难度也很大,有可能还在其父类中的module有我们需要的provider

比如这个:

就是刚才我们使用到的所有的需要启动的组件。

相关推荐
还是奇怪2 小时前
Linux - 安全排查 3
android·linux·安全
Android采码蜂2 小时前
BLASTBufferQueue03-BufferQueueConsumer核心操作
android
Android采码蜂3 小时前
BLASTBufferQueue02-BufferQueueProducer核心操作
android
2501_915921433 小时前
没有Mac如何完成iOS 上架:iOS App 上架App Store流程
android·ios·小程序·https·uni-app·iphone·webview
码农明明4 小时前
Google Play 应用上架二三事
android·google
红橙Darren7 小时前
手写操作系统 - 环境搭建
android·微信·操作系统
_一条咸鱼_7 小时前
Android Runtime直接内存管理原理深度剖析(73)
android·面试·android jetpack
你听得到117 小时前
揭秘Flutter图片编辑器核心技术:从状态驱动架构到高保真图像处理
android·前端·flutter
wilinz7 小时前
Flutter Android 端接入百度地图踩坑记录
android·flutter
小袁拒绝摆烂10 小时前
SQL开窗函数
android·sql·性能优化