Android系统启动--SystemServer进程启动

SystemServer进程主要用于创建系统服务,我们熟知的AMS,WMS和PMS都是由他创建的。

Zygote处理SystemServer进程,SystemServer进程的创建是复制了Zygote进程的地址空间 ,所以需要删除Zygote的socket,

(1)在ZygoteInit.java中做了如下操作

调用本地方法Zygote.nativeZygoteInit();用来启动Binder线程池,这样SystemSrever进程就可以和其他进程进行通信了

(2)进入SystemServer的main方法

创建SystemServiceManager,其用于对系统的服务进行创建,启动和生命周期管理

在SystemServer的main方法中做了很多初始化的工作

<1>.加载了“libandroid_servers.so”动态库

<2>.初始化了SystemServiceManager,他会对系统服务进行创建,启动和生命周期管理

<3>.调用startBootstrapServices();方法启动引导服务

<4>.调用startCoreServices();方法启动核心服务

<5>.调用startOtherServices();方法启动其他服务

官方主要把系统服务分为了三种类型,分别是引导服务,核心服务和其他服务

引导服务主要包含:

Installer:系统安装APK时的一个服务类,启动完成Installer服务后,才能启动其他的服务系统

ActivityManagerService:负责四大组件的启动切换和调度;

PowerManagerService:计算系统中和Power相关的计算,然后决策系统应该如何反应

LightsService:管理和显示背光LED

DisplayManagerService:用来管理所有的显示设备

PackageManagerService:用来对APK进行安装解析,删除,卸载等操作

...

核心服务:

DropBoxManagerService:用于生成和管理系统运行时的一些日志文件;

BatteryService:管理电池相关的服务;

UsageStatsService:收集每个用户使用APP的频率和使用时长

WebViewUpdateService:WebView更新服务

其他服务:

CameraService:摄像头相关服务

WindowManagerService:窗口管理服务

InputManagerService:管理输入事件

AlarmManagerService:全局定时器管理服务

VrManagerService:VR模式管理服务

BluetoothService:蓝牙管理服务

NotificationManagerService:通知管理服务

DeviceStorageMonitorService:存储管理服务

LocationManagerService:定位管理服务:

AudioService:音频相关管理服务

...

启动Service先把Service存储在SystemService类型的ArrayList中进行注册,然后通过onStart方法进行启动;

然后也可以通过直接调用服务的main方法进行启动

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值