Android源码学习 ——SystemUI(三)

本文探讨了Android SystemUI作为系统核心应用的启动过程,它在开机时启动,负责反馈系统状态和用户交互。从SystemServer如何启动SystemUI开始,通过时序图和关键代码分析,揭示了启动流程的关键步骤,包括SystemServer的BootstrapServices、CoreServices和OtherServices。SystemUI的启动涉及反射创建组件并调用startServicesIfNeeded方法,后续文章将详细分析各个组件的启动和运行细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SystemUI的启动流程

SystemUI属于系统级别的UI,是Android系统的核心应用,在开机过程中就会启动,负责反馈系统以及应用的状态,并与用户保持大量的交互。本系列文章涉及到的代码来自AndroidP版本。
为什么说SystemUI是在开机过程中启动的呢?
Init 是所有Linux程序的起点,而Android的启动过程都由Zygote产生。init 是 zygote的父进程, 而system_server和其他所有的com.xxx结尾的应用程序都是从zygote fork 而来。前面的SystemServer的启动过程不在涉猎范围之内,在此不做赘述,有兴趣的朋友可以从这里了解。
我们直接从SystemServer是如何启动SystemUI开始。先来一张时序图,能比较清晰完整的了解SystemUI的启动流程。
在这里插入图片描述
在./frameworks/base/services/java/com/android/server/SystemServer.java文件中,有个main方法:

public static void main(String[] args) {
    new SystemServer().run();
}

main方法中启动了run(),在run中启动了一系列的服务,在SystemServer代码中,对系统的服务类别分为三类:BootstrapServices(包含ServiceManager,ActivityManagerService,PackageManagerService,DisplayManagerService,PowerManagerService, LightsService等),CoreServices(包含BatteryService,UsageStatsService,WebViewUpdateService等),OtherServices(包含ConnectivityService, NetworkManagementService, storageManager, WindowManagerService, AlarmManagerService, SystemUI等)

private 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值