//SystemServer.javaprivate void startBootstrapServices() {//由SSM创建启动mActivityManagerService = mSystemServiceManager.startService(ActivityManagerService.Lifecycle.class).getService();mActivityManagerService.setSystemServiceManager(mSystemServiceManager);}private void startOtherServices() {//AMS准备就绪mActivityManagerService.systemReady(...);}
总结一下,进程被创建后,主要做了3件事情:启动线程池、创建(SSM)、用SSM启动各种服务 。
文章插图
/ 的启动 /
作为的桌面,用于管理应用图标和桌面组件 。
前边可知进程会启动各种服务,其中e启动后会将系统中的应用程序安装完成,然后由AMS来启动 。
//SystemServer.javaprivate void startOtherServices() {//AMS准备就绪mActivityManagerService.systemReady(...);}
跟进ce 。
//ActivityManagerService.javapublic void systemReady(...) {//经过层层调用来到startHomeActivityLocked}boolean startHomeActivityLocked(...) {//最终会启动Launcher应用的ActivitymActivityStarter.startHomeActivityLocked(...);}
类是.java,剩下的流程就是加载已安装的应用程序信息,然后展示,就不具体分析了 。
文章插图
/ 总结 /
系统启动的核心流程如下:
Linux内核启动
init进程启动
init进程fork出进程
进程fork出进程
进程启动各项服务(PMS、AMS等)
AMS服务启动桌面
文章插图
进程启动好服务端后,便会等待AMS的请求,来创建应用程序进程 。
细节补充
- 本科毕业设计 小麦播种机的设计(设计说明书+5张CAD图纸+SolidWorks
- 上 一篇文章读懂用户体验
- 一文读懂GPU显卡的10个重要参数
- Git[一文看懂git在工作上的常规用法]
- B+树详解,一次就懂
- 3分钟读懂类图—UML类图详解
- 解释原理简单易懂 进制转换详解
- 从水晶宫到甲秀楼:在数博会读懂智慧城市的“大工业时代”
- 看懂合成资产,Coinversation中的合约交易如何计算盈亏?
- 自觉php第一步做什么,PHP面向对象到底是啥?十分钟通俗易懂图文教程