Android启动流程

2019-04-14 16:37发布

Android启动流程

首先,android是基于Linux内核的,所以Android启动的时候也是先启动linux,然后再启动Android进程。下面我就为大家介绍一下Android的启动流程。
  1. 启动过程中首先就是给手机上电,上电大家都应该知道,是一个bootloader的过 程。上电的时候会加载一些img文件。在系统不出现问题的情况下。加载的是boot.img,
    系统出现故障会加载recovery.img.让用户进行恢复出厂的操作。
  2. 上电完成之后会启动kernel
  3. kernel启动完之后会启动init进程,这个进程的进程号是0,是不能轻易被杀死的,因为它是所有进程的父进程,一旦init进程挂掉之后,整个系统就挂了。init启动起来之后会启动一些守护进程,比如bootsound(开机声音),bootanimation(开机动画)等。
    1. init启动完成之后会启动Zygote,Zygote也是一个重要的东西,详细的后续再描述。
    2. Zygote启动之后就会起Systemserver了。至此也就真正地进入到我们熟悉的模块了,SystemServer会通过startBootstrapServices方法启动常用的核心服务,比如AMS,WMS,PMS等:
    这里写图片描述
启动完核心服务之后,通过startOtherServices启动一些不常用的服务。 这里写图片描述
  1. 这些服务启动完成之后,WMS会去启动Keyguard,AMS会通过startHomeActivityLocked去启动Launcher.然后启动一些系统进程,至此Android启动完成了。
    这里写图片描述

PS:第一次写博客生怕一言不合就被打,如果那点写的有问题的,或者不详细的,希望大家提出来,一块讨论讨论。新手求虐,大不了互相伤害