正文
AMS 是 Android 中最核心的服务之一 , 主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似,它本身也是一个 Binder 的实现类,应用进程能通过 Binder 机制调用系统服务在大多数情况下,每个 Android 应用都在各自的进程中运行;当需要运行应用的一些代码时,系统会为应用创建此进程,并使其保持运行,直到不再需要它且系统需要回收其内存以供其他应用使用
所以熟悉 Android 启动流程不仅决定了大厂永恒敲门砖,更能体现出工作中最能突显价值的金字招牌
再者近几年面试官也是进一步向深、向广
问题1:你了解Android系统系统启动流程吗?Android系统启动流程图
问题2:system_server为什么要在Zygote中启动,而不是由init直接启动呢?
问题3:为什么要专门使用Zygote进程去孵化应用进程 , 而不是让system_server去孵化呢?
问题4:能具体说说是怎么导致死锁的吗?
问题5:Zygote为什么不采用Binder机制进行IPC通信?
… …
文章插图
下面给大家依次分析一下图中各个层次的含义
Loader层
系统电源以及系统启动
- 当电源按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行;加载引导程序到RAM,然后执行
- 引导程序是在Android操作系统开始运行前的一个小程序 , 是运行的第一个程序,因此它是针对特定的主板与芯片的,可以使用redboot,uboot,qibootloader或者开发自己的引导程序,它不是Android操作系统的一部分,引导程序是OEM厂商或者运营商加锁和限制的地方
- 检测外部的RAM以及加载对第二阶段有用的程序
- 引导程序设置网络,内存等 , 这些对于运行内核是必要的,为了达到特殊的目标 , 引导程序可以根据配置参数或者输入数据设置内核
Kernel层指的就是Android内核层 , 这里一般开机刚结束进入Android系统,Kerner层的启动流程如下:
- 启动swapper进程(pid=0),这是系统初始化过程kernel创建的第一个进程,用于初始化进程管理、内存管理、加载Display、Camera、Binder等驱动相关工作
- 启动kthreadd进程,这是Linux系统的内核进程,会创建内核工作线程kworkder、软中断线程ksoftirqd和thermal等内核守护进程 。kthreadd是所有内核进程的鼻祖
这里的native层主要包括有init进程孵化的用户空间的守护进程,bootanim开机动画和hal层等 。init是Linux系统的守护进程,是所有用户空间进程的鼻祖 。init进程是Linux系统中用户空间的第一个进程,进程号固定为1
- init进程会孵化出ueventd、logd、healthd、installd、adbd、lm这里写代码片kd等用户守护进程
- init进程还会启动ServiceManager(Binder服务管家)、bootanim(开机动画)等重要服务
- init进程孵化出zygote进程,Zygote进程是Android系统的第一个Java进程(虚拟机进程),zygote进程是所有Java进程的父进程
- Zygote进程 , 是由init进程通过解析init.rc文件后fork生成的,Zygote进程主要包含: – 加载ZygoteInit类,注册Zygote Socket服务端套接字; – 加载虚拟机; – PreloadClasses; – PreloadResouces
- Zygote进程fork出System Server进程,System Server是Zygote孵化的第一个进程,地位非常重要
- System Server进程:负责启动和管理整个Java framework,包含ActivityManager,PowerManager等服务 。
- Media Server进程:负责启动和管理整个C++ framework , 包含AudioFlinger,Camera Service等服务
- Zygote进程孵化出的第一个App进程是Launcher , 这是用户看到的桌面App
- Zygote进程还会创建Browser,Phone,Email等App进程,每个App至少运行在一个进程上
- 所有的App进程都是由Zygote进程fork生成的
如果此时你还没有掌握一套主流技术,那么你就必须在最短的时间内迅速掌握?。蝗荒憔突岜簧缁崴蕴?nbsp;, 那我们应当如何去学习呢?
经过十个小时的编码排页,可算把腾讯大牛所整理的一张 Android Framework 思维导图及其配套的一份高工学习手册整理成 PDF 文档 , 需要的小伙伴:可私信发送 "FW 进阶" 即可 免费获取↓↓↓————私信发送 "FW 进阶" 即可 “领取《腾讯大牛的 Android Framework 思维导图及高工学习手册》”PDF 版
Android Framework 思维导图
文章插图
手册内容展示如下:
Framework 高工学习手册— Liunx 内存基础篇
文章插图
Framework 高工学习手册— Binder 源码篇
文章插图
Framework 高工学习手册—Hander消息机制篇
文章插图
Framework 高工学习手册—AMS篇
文章插图
Framework 高工学习手册—PMS篇
文章插图
Framework 高工学习手册—WMS篇
文章插图
【android7.0runtime】需要完整版《腾讯大牛的 Android Framework 思维导图及高工学习手册》PDF 文档的小伙伴:可在评论区下方留言 , 或者私信发送 "FW 进阶" 即可 免费获取↓↓↓
- 男大童羽绒服13-15岁旗舰店品牌 怎么买高品质户外羽绒服
- 微信又出新功能,表情包可以自定义了吗
- 2018年春节是什么日期
- 红娘子的另外两个结局 红娘子的结局
- 雪貂绒毛衣可以机洗吗,一般貂绒毛衣水洗会不会掉绒
- 郑国渠是秦始皇修的吗
- 群里号召大家捐款法律
- 赛尔号无氪得索比斯 赛尔号索比斯怎么样
- 小米有品黑科技防水