SystemServer 浅析

本篇文章主要介绍 Android 开发中 SystemServer进程启动 部分知识点,通过阅读本篇文章,您将收获以下内容:

1.SystemServer 进程启动导图

欢迎关注微信公众号:程序员Android

微信公众号:ProgramAndroid

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。

1. SystemServer 进程启动导图

640?wx_fmt=png

SystemServer 进程启动导图

2. SystemServer 启动过程分析

SystemServer 代码路径

\alps\frameworks\base\services\java\com\android\server\SystemServer.java

  1. main 方法

640?wx_fmt=png

systemServer main 方法

  1. Run 方法中初始化 时间,时区,语言等

640?wx_fmt=png

Run 方法中初始化信息

  1. 设置VM 内存,准备 main looper 初始化 Native 服务

640?wx_fmt=png

设置VM 内存,准备 main looper 初始化 Native 服务

  1. 检测最近一次触发关机是否失败

640?wx_fmt=jpeg

performPendingShutdown

640?wx_fmt=png

performPendingShutdown 实现

  1. 初始化 system context

640?wx_fmt=png

初始化System context

  1. 创建 systemServiceManager

640?wx_fmt=png

创建 systemServiceManager

  1. 将 systemServiceManager添加到LocalServices

640?wx_fmt=png

将 systemServiceManager添加到LocalServices

  1. 初始化systemServer 线程池

640?wx_fmt=png

初始化systemServer 线程池

3. SystemServer 开启Service 流程

640?wx_fmt=jpeg

开启Service

  1. 开启引导服务

640?wx_fmt=png

开启引导服务导图

  1. 开启核心服务

640?wx_fmt=png

开启核心服务 导图

  1. 开启其他服务

640?wx_fmt=png

开启其他服务导图

4. SystemServer 开启引导服务实现

startBootstrapServices实现

640?wx_fmt=png

startBootstrapServices1

640?wx_fmt=png

startBootstrapServices 2

640?wx_fmt=png

startBootstrapServices 3

5.SystemServer 开启核心服务实现

startCoreServices

640?wx_fmt=png

startCoreServices

6.SystemServer 开启其他服务实现

startOtherServices

640?wx_fmt=png

startOtherServices

640?wx_fmt=png

startOtherServices

640?wx_fmt=png

startOtherServices

640?wx_fmt=png

startOtherServices

640?wx_fmt=png

startOtherServices 确认各个Service 已准备就绪

640?wx_fmt=png

启动SystemUI

640?wx_fmt=png

启动SystemUI

640?wx_fmt=png

确认watchdog Thrid app Location 等已准备好

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。期待您的关注,

如有侵权,请联系小编,小编对此深感抱歉,同时小编会立即停止侵权行为。

欢迎关注微信公众号:程序员Android

微信公众号:ProgramAndroid

我们不是牛逼的程序员,我们只是程序开发中的垫脚石。

640?wx_fmt=gif

点击阅读原文,获取更多福利

640?wx_fmt=gif

SystemServer进程是Android系统中非常关键的一个进程,它负责启动和管理众多系统服务,例如ActivityManagerService、PackageManagerService、WindowManagerService等。SystemServer进程的启动机制可以分为以下几个主要步骤: 1. **Zygote进程创建SystemServer进程**:在Android系统启动过程中,Zygote进程会通过fork的方式创建SystemServer进程。Zygote是Android系统中的第一个Java进程,也是所有应用进程的父进程。SystemServer进程由Zygote孵化,确保了SystemServer进程能够继承Zygote的环境和资源[^1]。 2. **加载SystemServer类**:SystemServer进程启动后,会加载SystemServer类,并调用其main方法。这是SystemServer进程启动的入口点[^1]。 3. **初始化系统服务**:在SystemServer的main方法中,首先会创建一个SystemServiceManager实例,它是用来管理所有系统服务的。随后,SystemServer会启动核心系统服务,如ActivityManagerService、PackageManagerService、WindowManagerService等,这些服务对于系统的正常运行至关重要。SystemServiceManager负责这些服务的生命周期管理[^1]。 4. **启动服务**:一旦所有必要的系统服务被创建,SystemServer会调用这些服务的onStart方法,开始执行各自的服务逻辑。这些服务会监听特定的事件或请求,提供系统级别的功能支持[^1]。 5. **保持运行**:SystemServer进程在整个系统运行期间保持活跃状态,持续管理和监控各个系统服务的状态。如果某个服务出现异常或崩溃,SystemServer负责重启该服务以保证系统的稳定性[^1]。 SystemServer进程的启动机制体现了Android系统设计的模块化和分层特性,通过这种方式,Android能够在保证系统稳定性和安全性的同时,提供丰富的系统服务给应用程序使用。 ```java public final class SystemServer { public static void main(String[] args) { new SystemServer().run(); } private void run() { // 创建SystemServiceManager实例 mSystemServiceManager = new SystemServiceManager(mSystemContext); // 启动核心系统服务 startBootstrapServices(); // 启动其他系统服务 startOtherServices(); // ... } private void startBootstrapServices() { // 启动核心服务,如ActivityManagerService // ... } private void startOtherServices() { // 启动其他服务,如WindowManagerService, PackageManagerService等 // ... } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值