《Android的设计与实现:卷I》——第3章 Android启动过程的底层实现

简介: 本节书摘来自华章出版社《Android的设计与实现:卷I》——第3章,第3.1节。作者: 杨云君著.更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第3章 Android启动过程的底层实现

Android支持多种启动模式,主要有正常模式(normal mode)、安全模式(safe mode)、恢复模式(recovery mode)、工厂模式(factory mode)、快速启动模式(fastboot mode)等。除正常模式外,都是刷机或者测试模式,本书只讲解正常模式下Android的启动过程。如果读者对其他启动模式感兴趣,可以自行查阅相关资料。

3.1 Android正常模式启动流程

Android的正常模式启动流程大体如下:
步骤1 系统加电,执行bootloader。bootloader负责初始化软件运行所需的最小硬件环境,最后加载内核到内存中。

步骤2 内核加载进内存后,将首先进入内核引导阶段,在引导阶段最后,调用start_kernel进入内核启动阶段。start_kernel最终启动用户空间的init程序。

步骤3 init程序负责解析init.rc配置文件,开启系统守护进程。两个最重要的守护进程是zygote和ServiceManager。前者是Android启动的第一个Dalvik虚拟机,它将负责启动Java世界的进程;后者是Binder通信的基础。

步骤4 zygote虚拟机启动子进程system_server,在system_server中开启了Android核心系统服务并将核心系统服务添加到ServiceManager,然后系统进入systemReady状态。

步骤5 在systemReady状态下,ActivityManagerService与zygote中的Socket通信,通过zygote启动Home应用,进入系统桌面。

步骤1中的bootloader依赖于硬件体系结构,需要读者熟悉特定硬件体系结构及其对应的汇编语言。每个厂商都有自己独特的bootloader程序,所以本书不介绍这部分内容。步骤2和步骤3主要与Linux相关,但是对理解框架层至关重要,将在本章讲解。步骤4和步骤5与Android关系更紧密,将在第4章讲解。

相关文章
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
缓存 JSON Java
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
java 实现读取txt文件,反射创建对象,android 手机缓存文件目录
|
Android开发 容器
Android实现面包屑效果,支持Fragment联动
Android实现面包屑效果,支持Fragment联动
|
Android开发
Android实现连线题效果
Android实现连线题效果
|
移动开发 JavaScript Android开发
通过howler.js实现在Android下的微信浏览器自动播放音频
通过howler.js实现在Android下的微信浏览器自动播放音频
1178 0
通过howler.js实现在Android下的微信浏览器自动播放音频
|
数据库 Android开发
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
android 多级下拉菜单实现教程 greendao使用
|
XML 开发工具 Android开发
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
561 0
Android自定义控件(十三)——实现CSDN搜索框文字提示容器
|
Java 调度 Android开发
android体系课-系统启动流程-之zygote进程启动过程源码分析
笔者刚开始学习Android的时候也和大部分同学一样,只会使用一些应用层面的知识,对于一些比较常见的开源框架如<mark>RxJava</mark>,<mark>OkHttp</mark>,<mark>Retrofit</mark>,以及后来谷歌推出的<mark>协程</mark>等,都只在使用层面,对于他们<mark>内部原理</mark>,基本没有去了解觉得够用就可以了,又比如Activity,Service等四大组件的使用原理,系统开机过程,Launcher启动过程等知之甚少,知其然而不知其所以然,结果就是出现某些问题,不知道从哪里找原因,只能依赖万能的百度,但是百度看多了,你会发现自己
|
Java 调度 Android开发
android体系课-系统启动流程-之SystemServer启动过程源码分析
笔者刚开始学习Android的时候也和大部分同学一样,只会使用一些应用层面的知识,对于一些比较常见的开源框架如<mark>RxJava</mark>,<mark>OkHttp</mark>,<mark>Retrofit</mark>,以及后来谷歌推出的<mark>协程</mark>等,都只在使用层面,对于他们<mark>内部原理</mark>,基本没有去了解觉得够用就可以了,又比如Activity,Service等四大组件的使用原理,系统开机过程,Launcher启动过程等知之甚少,知其然而不知其所以然,结果就是出现某些问题,不知道从哪里找原因,只能依赖万能的百度,但是百度看多了,你会发现自己
|
Android开发
Android实现调用系统相机录像及实现录音
Android实现调用系统相机录像及实现录音
834 0

热门文章

最新文章