【源码解析】Launcher 8.0源码(3)—Launcher的启动流程

微信扫一扫,分享到朋友圈

【源码解析】Launcher 8.0源码(3)—Launcher的启动流程

上一篇我们讲解了Launcher的基本知识点,本篇我们来学习一下Launcher的启动流程

Launcher启动流程分析

我们知道android系统是运行在Linux内核上,整个launcher的启动流程如图所示,接下来我们一步一步进行分析。

QQ图片20181010223640.png

【init进程】

Linux内核启动后巡行的第一个进程是init。这个进程是一个守护进程。生命周期贯穿整个Linux内核 运行的始终。

我们知道android系统是运行在Linux内核上的所以google实现了android系统的init进程。

init进程主要做了三件事:

  • 创建一些文件夹并挂在设备
  • 初始化和启动属性服务
  • 解析init.rc配置文件并启动zygote进程

【zygote孵化器】

创建JavaVm(java虚拟机),应用程序进程,运行系统的关键服务,systemservice进程

它是通过fock(复制进程)的形式来创建应用程序和systemservice进程

sygote在启动时会创建javaVm,所以fock创建的应用进程和systemserver进程内部可以获取一个javaVm的实例拷贝。

sygote孵化器做了什么:

  • 创建AppRuntime并调用start方法,启动zygote进程。
  • 创建JavaVM并为JVM注册JNI。
  • 通过JNI调用zygoteInit的main函数进入zygote的Java框架层
  • 通过registerzygotesocket函数创建服务端socket,并通过runselectloop等向ActivityManagerService的请求来创建新的应用进程。
  • 启动SystemServer进程

崔永元微博直播被禁实属乌龙,但他的头条粉丝已刹不住车了!

上一篇

Data models within Azure Analysis Services and Power BI

下一篇

你也可能喜欢

【源码解析】Launcher 8.0源码(3)—Launcher的启动流程

长按储存图像,分享给朋友