android系统启动流程
来源:互联网 发布:postgresql mysql 电商 编辑:程序博客网 时间:2024/06/15 16:53
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)。
- Android系统启动流程 -- android
- Android系统启动流程 -- android
- Android系统启动流程 -- android
- Android系统启动流程 -- android
- Android系统启动流程 -- android
- Android系统启动流程 -- android
- Android系统启动流程 -- android
- android系统启动流程分析:
- Android系统启动流程 -- bootloader
- Android系统启动流程
- Android系统启动流程 -- bootloader
- Android系统启动流程 -- bootloader +
- Android系统启动流程
- Android系统启动流程
- Android系统启动流程
- Android系统启动流程
- Android系统启动流程 -- bootloader
- Android系统启动流程 -- bootloader
- SpringBoot 集合mybatis代码生成器
- Linux作业
- java反射学习笔记(3)----使用反射来调用方法
- 数字图像处理-离散傅里叶变换(opencv3+C++显示)
- 如何避免产品设计中的「生造方案」和「重新发明轮子」
- android系统启动流程
- 【OI之路】11更高级数论-2莫比乌斯反演
- linux分区的基本方案
- 产品设计过程中,异常流程设计的那些事儿
- 实验吧-你真的会PHP吗?writeup
- java多线程详细基础概念
- SQL语法学习记录
- 聊聊全链路设计和传统设计的流程差异
- 最长上升子序列——O (nlogn)算法原因解析!为什么这样可以求出来!(附带动态规划dp + 二分查找讲解)