当linux内核启动后会初始化各种软硬件环境,加载驱动程序,挂载根文件系统,并开始执行根文件系统的init程序,init程序是Android启动过程中最重要的核心程序 。
init进程是Android系统中用户进程的鼻祖进程 。init进程会启动各种系统本地服务,如:Media Server、Service Manager、bootanim(开机动画)等 。init进程会在解析init.rc文件后fork出Zygote,而Zygote是所有Java进程的父进程,我们的App都是由Zygote fork出来的 。
Zygote进程主要包含:
- 加载ZygoteInit类,注册Zygote Socket服务端套接字;
- 加载虚拟机;
- 预加载Android核心类
- 预加载系统资源
当System Server将系统服务启动就绪后,就会通知ActivityManager启动首个Android程序Home即我们看到的桌面程序 。
至此,从Android手机开机到看到桌面程序所有过程分析完了 。
最后附一张整体流程图,帮助更好理解:
文章插图
推荐阅读
- Android指纹识别,提升APP用户体验,从这里开始
- Android代码混淆到底是什么?它的好处有哪些?具体效果如何?
- 开发第一个Android应用之前你需要知道的六件事
- 学习Android开发的二十套免费理想资源
- 9款Android经常使用的高速开发框架
- 学会这些你就是Android 开发高手了!
- Android 优化总结
- 探索 Android 内存优化方法
- 什么是VXLAN
- 从微信小程序开发者工具源码看小程序架构设计实现原理