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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值