在 Android 系统中,DVM
(Dalvik
虚拟机)和 ART
、应用程序进程以及运行系统的关键服务的 SystemServer
进程都是由 Zygote
进程来创建的,我们也将它称为孵化器。 它通过 fock
(复制进程)的形式来创建应用程序进程和 SystemServer
进程,由于 Zygote
进程在启动时会创建 DVM
或者 ART
,因此通过 fock
而创建的 应用程序进程和 SystemServer
进程可以在内部获取一个 DVM
或者 ART
的实例副本。
我们已经知道 Zygote
进程是在 init
进程启动时创建的,起初 Zygote
进程的名称并不是叫 “Zygote”
,而是叫 “app_process”
,这个名称在 Android.mk
中定义的,Zygote
进程启动后,Linux
系统下的 pctrl
系统会调用 app_process
, 将其名称换成了 “Zygote”
。
Zygote
进程启动总结
-
创建
AppRuntime
并调用其start
方法,启动Zygote
进程。 -
创建 Java 虚拟机并为 Java 虚拟机注册
JNI
方法。 -
通过
JNI
调用ZygoteInit
的main
函数进入Zygote
的 Java 框架层。 -
通过
registerZygoteSocket
方法创建服务器端Socket
,并通过runSelectLoop
方法等待AMS
的请求来创建新的应用程序进程。 -
启动
SystemServer
进程。
SystemServer 进程主要用于创建系统服务,我们熟知的 AMS、WMS 和 PMS 都是由它来创建的,因此掌握 SystemServer 进程是如何启动的,它在启动时做了哪些工作是十分必要的。
SystemServer
进程启动总结
SystemServer 进程被创建后,主要做了如下工作:
-
启动 Binder 线程池,这样就可以与其他进程进行通信。
-
创建 SystemServerManager,其用于对系统的服务进行创建、启动和生命周期管理。
-
启动各种系统服务。(引导服务、核心服务和其他服务)
引导服务:AMS、PMS等等
1、SystemServer
进程启动总结
当电源键按下时引导芯片代码从预定义的地方(固化在 ROM)开始执行。加载引导程序 BootLoader 到 RAM,然后执行。
2、引导程序 BootLoader
引导程序 BootLoader 是在 Android 操作系统开始运行前的一个小程序, 它的主要作用是把系统 OS 拉起来并运行。
3、Linux
内核启动
当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找 init.rc 文件,并启动 init 进程。
4、init
进程启动
初始化和启动属性服务,并且启动 Zygote 进程。
5、Zygote
进程启动
创建 Java 虚拟机并为 Java 虚拟机注册 JNI 方法,创建服务器端 Socket,启动 SystemServer 进程。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
Android核心知识点
面试成功其实是必然的,因为我做足了充分的准备工作,包括刷题啊,看一些Android核心的知识点,看一些面试的博客吸取大家面试的一些经验。
下面这份PDF是我翻阅了差不多3个月左右一些Android大博主的博客从他们那里取其精华去其糟泊所整理出来的一些Android的核心知识点,全部都是精华中的精华,我能面试到现在2-2资深开发人员跟我整理的这本Android核心知识点有密不可分的关系,在这里本着共赢的心态分享给各位朋友。
不管是Android基础还是Java基础以及常见的数据结构,这些是无原则地必须要熟练掌握的,尤其是非计算机专业的同学,面试官一上来肯定是问你基础,要是基础表现不好很容易被扣上基础不扎实的帽子,常见的就那些,只要你平时认真思考过基本上面试是没太大问题的。
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上我搜集整理的2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
来学习,也可以分享给身边好友一起学习。
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!