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

比如这个:

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

相关推荐
CV资深专家3 小时前
Android 各分区模块编译配置(mk/bp)总结
android
louisgeek5 小时前
Java 线程池取消的方式
android
Billy_Zuo6 小时前
人工智能机器学习——模型评价及优化
android·人工智能·机器学习
tangweiguo030519876 小时前
Flutter与原生混合开发:实现完美的暗夜模式同步方案
android·flutter
雨白7 小时前
深入理解 Android 触摸事件:以实现 ViewPager 为例
android
shenshizhong7 小时前
看懂鸿蒙系统源码 比较重要的知识点
android·harmonyos
一只修仙的猿9 小时前
再谈性能优化,一次项目优化经历分享
android·性能优化
雮尘11 小时前
Android性能优化之枚举替代
android
2501_9159090613 小时前
苹果上架App软件全流程指南:iOS 应用发布步骤、App Store 上架流程、uni-app 打包上传与审核技巧详解
android·ios·小程序·https·uni-app·iphone·webview
2501_9159214313 小时前
iOS 文件管理与能耗调试结合实战 如何查看缓存文件、优化电池消耗、分析App使用记录(uni-app开发与性能优化必备指南)
android·ios·缓存·小程序·uni-app·iphone·webview