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

比如这个:

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

相关推荐
fatiaozhang95272 小时前
创维智能融合终端SK-M424_S905L3芯片_2+8G_安卓9_线刷固件包
android·电视盒子·刷机固件·机顶盒刷机
来来走走2 小时前
Flutter开发 了解Scaffold
android·开发语言·flutter
哆啦A梦的口袋呀4 小时前
Android 底层实现基础
android
闻道且行之4 小时前
Android Studio下载及安装配置
android·ide·android studio
alexhilton4 小时前
初探Compose中的着色器RuntimeShader
android·kotlin·android jetpack
小墙程序员4 小时前
kotlin元编程(二)使用 Kotlin 来生成源代码
android·kotlin·android studio
小墙程序员5 小时前
kotlin元编程(一)一文理解 Kotlin 反射
android·kotlin·android studio
fatiaozhang95276 小时前
创维智能融合终端DT741_移动版_S905L3芯片_安卓9_线刷固件包
android·电视盒子·刷机固件·机顶盒刷机
小林学Android8 小时前
Android四大组件之Activity详解
android
搬砖不得颈椎病8 小时前
Jetpack DataStore vs SharedPreferences:现代Android数据存储方案对比
android