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

比如这个:

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

相关推荐
dora23 分钟前
Flutter的屏幕适配
android·flutter
SoulKuyan1 小时前
android 发送onkey广播,Android 添加键值并上报从驱动到上层
android
Yang-Never1 小时前
ADB->查看某个应用的版本信息
android·adb·android studio
居然是阿宋3 小时前
Android RecyclerView 多布局场景下的设计思考:SRP 与 OCP 的权衡与优化
android·开闭原则·单一职责原则
前行的小黑炭3 小时前
Retrofit框架分析(二):注解、反射以及动态代理,Retrofit框架动态代理的源码分析
android·kotlin·retrofit
zach3 小时前
android项目如何修改第三方类库,导入到自己的项目中
android·前端·架构
三思而后行,慎承诺3 小时前
安卓的Launcher 在哪个环节进行启动
android
WenGyyyL4 小时前
《Android 应用开发基础教程》——第四章:Intent 与 Activity 跳转、页面传值
android·手机·android studio
Wgllss4 小时前
Android图片处理:多合一,多张生成视频,裁剪,放大缩小,滤镜色调,饱和度,亮度调整
android·架构·android jetpack
梦想平凡4 小时前
三网通电玩城平台系统结构与源码工程详解(三):控制台与银商权限模块设计
android