android系统启动流程

1、开机

开始给系统供电,此时硬件电路会产生一个复位时序,包括磁盘、内存、CPU和其他硬件全部要准备就绪,复位完成后,CPU开始执行第一条指令。该指令指向引导程序(Bootloader),其作用是装载真正的应用程序。

2、执行操作系统内核

初始化各种硬件,包括内存、网络接口、显示器、输入设备,建立各种内部数据结构,内核初始化完毕后开始运行具体的应用程序。

3、运行Android程序

通过该程序可以方便的启动其他的应用程序,Android系统相当于被执行的第一个应用程序。Linux系统启动完成后,内核读取init.rc文件,启动Android内核。

4、Framework启动过程:

系统运行的第一个的Dalivik虚拟机程序zygote,接下来所有的Dalivk虚拟机进程都是这个卵孵化出来的,zygote进程主要包括两个主要模块:

  • Socket服务端。用于接收启动新的Dalivk进程的命令
  • Framework共享类及共享资源。当zygote进程启动后,会装载一些共享的类及资源,当这些类和资源装载后,新的Dalivk进程就不需要再装载这些类和资源。

zygote孵化出的第一个Dalvik进程叫做SystemServer,SystemServer进程创建了一个Socket客户端,并由Ams负责管理该客户端,之后所有的Dalvik进程都是通过该客户端被启动,当需要启动新的APK进程时,Ams会通过该Socket客户端向Zygote进程的Socket服务端发送一个启动命令,然后孵化出新的进程。

启动各种系统服务线程

SystemServer进程在Android中相当于神经中枢的作用。APK中能够直接交互的大部分系统服务都在此进程中运行,比如Wms、Ams、Pms等。这些系统服务都是以一个线程的形式存在于SystemServer进程中。

启动第一个Activity

当以上服务线程都被启动后,其中Ams服务是最后一个启动的,而在Ams的systemReady()函数中的最后一段代码会发出启动任务队列中最上面一个Activity的消息。用户可以自己设定一个activity作为第一个启动的程序。只要它的intent中添加一个category(Intent.CATEGORY_HOME)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值