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

相关文章

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

树莓派启动python的实现方法

《树莓派启动python的实现方法》本文主要介绍了树莓派启动python的实现方法,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、RASPBerry系统设置二、使用sandroidsh连接上开发板Raspberry Pi三、运

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表