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

比如这个:

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

相关推荐
Larry_Yanan11 分钟前
Qt安卓开发(三)双摄像头内嵌布局
android·开发语言·c++·qt·ui
粲然忧生14 分钟前
腾讯云终端性能监控SDK正式上线,为鸿蒙开发适配保驾护航
android·腾讯云·harmonyos
我命由我1234516 分钟前
Kotlin 开发 - Kotlin Lambda 表达式返回值
android·java·开发语言·java-ee·kotlin·android studio·android-studio
FrameNotWork40 分钟前
Android Camera HAL实现windows摄像头显示:从黑屏到彩色照片的完整攻坚
android
PyHaVolask2 小时前
CSRF跨站请求伪造
android·前端·csrf
走在路上的菜鸟2 小时前
Android学Flutter学习笔记 第五节 Android视角认知Flutter(插件plugins)
android·学习·flutter
2501_915921433 小时前
如何在苹果手机上面进行抓包?iOS代理抓包,数据流抓包
android·ios·智能手机·小程序·uni-app·iphone·webview
_李小白3 小时前
【Android 美颜相机】第五天:GPUImageFilterTools
android·数码相机
冬奇Lab3 小时前
【Kotlin系列05】集合框架:从Java的冗长到函数式编程的优雅
android·kotlin·编程语言