SystemServer启动服务流程

2024-05-24 04:32

本文主要是介绍SystemServer启动服务流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SystemServer启动服务流程:
SystemServer进程主要的作用是在这个进程中启动各种系统服务,比如ActivityManagerService, PackageManagerService,WindowManagerService服务,以及各种系统性的服务其实都是在SystemServer进程中启动的,而当我们的应用需要使用各种系统服务的时候其实也是通过与SystemServer进程通讯获取各种服务对象的句柄的。
SystemServer服务进程,final类不能被继承和重写。入口main方法主要创建Systemserver的对象并调用run()方法。
run()方法执行如下:
1.设置系统的时钟 默认:1970和时区:GMT。
2.设置系统的语言。
3.设置当前虚拟机的运行库路径。
4.prepare main looper
5.装载libandroid_servers.so库并初始化native层的Service
6.初始化系统的Context:createSystemContext()
实际返回的是ContextImpl对象,并将其保存在mSystemContext变量中。
7.创建SystemServiceManager对象并将其添加到LocalServices中
将上一步创建好的Context对象传入到SystemServiceManager构造器中,并创建SystemServiceManager对象mSystemServiceManager,同时将mSystemServiceManager添加到LocalServices中,LocalServices实际ArrayMap中按对应class存放。
*8.开机向导服务 startBootstrapServices()
启动系统引导的Service。
Installer类是系统安装apk时的一个服务类,该类是系统安装apk时的一个服务类
这个方法中启动的都是系统中的核心服务,比如ActivityManagerService,PowerManagerService,LightsService,DisplayManagerService,PackageManagerService等
ServiceManager是系统服务管理对象。
AMS是系统的引导服务,应用进程的启动、切换和调度、四大组件的启动和管理都需要AMS的支持。
PowerManagerService主要用于计算系统中和Power相关的计算,然后决策系统应该如何反应。同时协调Power如何与系统其它模块的交互,比如没有用户活动时,屏幕变暗等等。
LightsService主要是手机中关于闪光灯,LED等相关的服务;也是会调用LightsService的构造方法和onStart方法。
DisplayManagerService用来管理所有显示设备
PackageManagerService 是android系统中一个比较重要的服务,用来对apk进行安装、解析、删除、卸载等等操作。
UserManagerService 多用户模式管理
SensorService 为系统提供各种感应器服务
*9.核心服务 startCoreServices()
BatteryService、UsageStatsService、UsageStatsManagerInternal
、WebViewUpdateService、BinderCallsStatsService
*10.其他服务 startOtherServices()
进行了一大堆初始化,最后运行到初始化UI,启动了
CameraService、AlarmManagerService、VrManagerService,launcher,startSystemUi。
11.调用Looper.loop()创建消息队列循环

从开机到SystemServer系统服务启动
https://www.jianshu.com/p/8db39d99b512

这篇关于SystemServer启动服务流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997375

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配