init 进程做的工作比较多 ,主要用来初始化和启动属性服务,也用来启动 Zygote 进程。
从上面的步骤可以看出, 当我们按下启动电源时,系统启动后会加载引导程序, 引导程序又启动 Linux 内核,在 Linux 内核加载完成后,第一件事就是要启动 init 进程。
2.1.7、init进程启动总结
init 进程启动做了很多的工作,总的来说主要做了以下三件事:
-
创建和挂载启动所需的文件目 录。
-
初始化和启动属性服务。
-
解析 init.rc 配置文件并启动 Zygote 进程。
2.2、Zygote进程启动过程
================
在 上一小节节中我们学习了 init 进程启动过程,在启动过程中主要做了三件事,其中一件就是创建了 Zygote 进程,本节接着学习 Zygote 进程启动过程, 首先我们要了解 Zygote 是什么。
2.2.1、Zygote概述
在 Android 系统中, DVM (Dalvik 虚拟机)和 ART 、 应用程序进程以及运行系统的关键服务的 SystemServer 进程都是由 Zygote 进程来创建的,我们也将它称为孵化器。
2.2.4、Zygote进程启动总结
Zygote 进程启动共做了如下几件事 :
-
创建 AppRuntime 并调用其 start 方法,启动 Zygote 进程。
-
创建 Java 虚拟机并为 Java 虚拟机注册 JNI 方法 。
-
通过JNI调用 Zygotelnit 的 main 函数进入 Zygote 的 Java 框架层。
-
通过 registerZygoteSocket 方法创建服务器端 Socket ,并通过 runSelectLoop 方法等待 AMS 的请求来创建新的应用程序进程。
-
启动 SystemServer 进程。
2.3、SystemServer 处理过程
=====================
SystemServer 进程主要用于创建系统服务,我们熟知的 AMS 、 WMS 和 PMS 都是由它来创建的。
2.3.3、SystemServer 进程总结
SystemServer 进程被创建后,主要做了如下工作:
-
1 启动 Binder 线程池,这样就可以与其他进程进行通信 。
-
2 创建 SystemServiceManager ,其用于对系统的服务进行创建、启动和生命周期管理。
-
3 启动各种系统服务。
2.4、Launcher 启动过程
=================
此前已经学习了 Android 系统启动流程的 init 进程、 Zygote 进程和 SystemServer 进程,最后我们来学习 Launcher 的启动过程。
2.4.1、Launcher 概述
系统启动的最后一步是启动一个应用程序用来显示系统中已经安装的应用程序,这个应用程序就叫作 Launcher 。Launcher 在启动过程中会请求 PackageManagerService 返回系统中已经安装的应用程序的信息,并将这些信息封装成一个快捷图标列表显示在系统屏幕上,这样用户可以通过点击这些快捷图标来启动相应的应用程序。
通俗来讲 Launcher 就是 Andro id 系统的桌面,它的作用主要有以下两点:
-
(1)作为 Android 系统的启动器,用于启动应用程序 。
-
(2)作为 Android 系统的桌面,用于显示和管理应用程序的快捷图标或者其他桌面组件。
2.5、Android 系统启动流程
==================
结合本章前 4 节的内容,我们可以清晰地总结出 Android 系统启动流程,这个流程主要有以下几个部分。
1、启动电源以及系统启动
当电源按下时引导芯片代码从预定义的地方(固化在 ROM )开始执行。加载引导程序BootLoader 到 RAM ,然后执行。
2、引导程序 Bootloader
引导程序 BootLoader 是在 Android 操作系统开始运行前的一个小程序,它的主要作用是把系统 OS 拉起来并运行。
3、Linux 内核启动
当内核启动时 ,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找 init.rc 文件,并启动 init 进程 。
4、init 进程启动
初始化和启动属性服务,井且启动 Zygote 进程。
5、Zygote 进程启动
创 建 Java 虚拟机井为 Java 虚拟机注册 JNI 方告,创建服务器端 Socket ,启动SystemServer 进程。
6、SystemServer 进程启动
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
结尾
- 腾讯T4级别Android架构技术脑图;查漏补缺,体系化深入学习提升
- 一线互联网Android面试题含详解(初级到高级专题)
这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率
有Android开发3-5年基础,希望突破瓶颈,成为架构师的小伙伴,可以关注我
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://docs.qq.com/doc/DSkNLaERkbnFoS0ZF)收录**
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-1YVlIfBH-1712695891357)]