| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 移动开发 -> Android:开机流程 -> 正文阅读 |
|
|
[移动开发]Android:开机流程 |
|
流程顺序:
思维导图:
口述表达: 整个的开机流程,分为两个阶段,第一阶段为Linux的启动过程,第二个阶段为android的启动流程。 Linux的启动过程: 1)首先是用户点击开机键,芯片开始执行ROM中的预存代码 2)然后引导程序(BootLoader)将操作系统映像文件拷贝到RAM中去,引导程序开始初始化硬件参数,然后启动操作系统。 3)接着引导程序会初始化Kernel,加载内核到内存中。 4)start_kernel会最终启动用户空间的init进程。 Android的启动过程: 5)当初始化内核之后,就会启动一个相当重要的祖先进程,也就是init进程,在Linux中所有的进程都是由init进程直接或间接fork出来的。init进程负责创建系统中最关键的几个核心daemon(守护)进程,尤其是zygote和servicemanager。前者是android启动的第一个dalvik 虚拟机,它将负责启动Java世界的进程;后者是BInder通信的基础。换句话说, init进程负责解析init.rc配置文件,开启系统守护进程。两个最重要的守护进程是zygote进程和servicemanager 6)当init进程创建之后,会fork出一个Zygote进程,这个进程是所有Java进程的父进程。在zygote开启的时候,会调用ZygoteInit.main()进行初始化。zygote虚拟机启动子进程system_server,同时也可以看出zygote中定义了一个Socket,用于接收ActivityManagerService启动应用程序的请求。前面ZygoteInit.java里面通过startSystemServer() fork出了SystemServer进程,这个进程在整个的Android中非常重要,它和Zygote进程一样,是Android Framework层的两大重要进程。系统里面重要的服务都是在这个进程里面开启的,例如AMS, WindowsManager, PackageManagerService等等都是由这个SystemServer fork出来的。 7)在SystemServer进程开启的时候,就会初始化ActivityManagerService 。同时,会加载本地系统的服务库,调用createSystemContext()创建系统上下文,创建ActivityThread及开启各种服务等等。也就是说在system_server中开启了核心系统服务,并将系统服务添加到ServiceManager中,然后系统进入SystemReady状态。 8)上面ActivityManagerService 开启之后,会调用finishBooting() ,完成引导过程,同时发送开机广播。ActivityManagerService会与zygote的Socket通信,请求启动Home。zygote收到AMS的连接请求后,zygote处理请求会通过fork启动新的应用进程,并最终启动Home。,完成系统界面的加载与显示。 |
|
|
| 移动开发 最新文章 |
| Vue3装载axios和element-ui |
| android adb cmd |
| 【xcode】Xcode常用快捷键与技巧 |
| Android开发中的线程池使用 |
| Java 和 Android 的 Base64 |
| Android 测试文字编码格式 |
| 微信小程序支付 |
| 安卓权限记录 |
| 知乎之自动养号 |
| 【Android Jetpack】DataStore |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/28 5:56:30- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |