Android的启动过程包含从Linux加载到home程序运行的过程,如下图所示:

1.linux内核:

Android是基于Linux内核的系统平台。启动时,首先通过bootloader加载LInux内核。与普通的linux加载相同,先初始化内核,然后再调用init进程。

2.init

Android init进程是对各种设备进行初始化,运行Android Framework所需要的各种deamon,Context Manager,Media Server ,Zygote等

init进程执行的deamon进程如下图:

3.Context Manager

Context Manager 是一个管理Andriod系统服务的重要进程。系统服务是组成Android Framework的重要组件,提供从相机,音频,视频处理到应用程序制作所有重要的API。

Context Manager 提供运行于Android的各种系统服务的查询信息。应用程序或者Framework 模块调用系统服务时,都要通过Binder IPC向Context Manager进行查询申请,获得相应的系统服务的信息。

同样,Android的系统服务也要通过Binder ipc(进程间通信)把自己的Handle信息注册到Context Manager,以供查询。

4.Media Server

Media Server 运行基于C/C++的本地系统服务,如Audio Flinfger(负责音频输出),camera,media player service等

5.Zygote

Zygote用于缩短Android应用程序的加载时间,每当执行java应用程序时候,Zygote就会派生一个子进程,这个子进程就是用来执行java程序的虚拟机。

6.System Server

System Server 是Android的一个系统进程,它是由Zygote创建的,在Android的启动过程中,位于Zygote之后。在System Server中可以看到它建立了Android中的大部分服务(所有的java层系统服务以及Surface Flinger这个本地系统服务),包括Activity Manager Service以及Location Manager Service等

java层的系统服务需要通过JNI注册到Context Manager中。

关于系统的详细介绍,在我其他的几篇文章,链接在下面:

Android的Context Manager(服务管理器)源码剖析

Android系统服务详解

Android Binder IPC详解

所有的系统服务启动完了之后,Activity Manager Service会启动home程序,出现开机桌面。

Android的启动过程分析(从进程和Framework的角度)-android学习之旅(98)的更多相关文章

  1. android activity 启动过程分析(source code 4.4)

    说实话,android source code从2.3到4.4变化是蛮多的,尤其是media部分,虽然总的框架是没有多大变化,但是找起代码来看还是挺麻烦的.在android里面最受伤的是使用了java ...

  2. Android移动后端服务(BAAS)快速搭建后台服务器之Bmob-android学习之旅(75)

    个人移动开发者的最头疼的问题,就是App的网络后台,包含数据库等,国外目前有比较成熟的解决方案,但是限制于墙的问题,推荐国内的解决方案,比较出名的是Bmob和AVOS cloud和Atom等,这一次我 ...

  3. Android的Context Manager(服务管理器)源码剖析-android学习之旅(99)

    Context Manager介绍 Context Manager对应的进程是servicemanager进程,它先于Service Server和服务客户端运行,进入接收IPC数据的待机状态,处理来 ...

  4. Android Binder IPC详解-Android学习之旅(96)

    linux内存空间与BInder Driver Android进程和linux进程一样,他们只运行在进程固有的虚拟空间中.一个4GB的虚拟地址空间,其中3GB是用户空间,1GB是内核空间 ,用户空间是 ...

  5. Android系统服务详解-android学习之旅(95)

    本文是看完android框架揭秘第六章后的总结 android系统服务提供最基本的,最稳定的核心功能,如设备控制,信息通知,通知设定,以及消息显示等,存在于Android Framework与Andr ...

  6. Android Activity 启动模式详解

    最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了 ...

  7. Zygote和System进程的启动过程、Android应用进程启动过程

    1.基本过程 init脚本的启动Zygote Zygote进程的启动 System进程的启动 Android应用进程启动过程 2.init脚本的启动 +------------+ +-------+ ...

  8. 开机SystemServer到ActivityManagerService启动过程分析

    开机SystemServer到ActivityManagerService启动过程 一 从Systemserver到AMS zygote-> systemserver:java入层口: /** ...

  9. ActivityManagerService启动过程分析

    之前讲Android的View的绘制原理和流程的时候,讲到过在Android调用setContentView之后,Android调用了一个prepreTravle的方法,这里面就提到了Activity ...

随机推荐

  1. Spark调度模式-FIFO和FAIR

    Spark中的调度模式主要有两种:FIFO和FAIR.默认情况下Spark的调度模式是FIFO(先进先出),谁先提交谁先执行,后面的任务需要等待前面的任务执行.而FAIR(公平调度)模式支持在调度池中 ...

  2. OpenCV相机标定

    标签(空格分隔): Opencv 相机标定是图像处理的基础,虽然相机使用的是小孔成像模型,但是由于小孔的透光非常有限,所以需要使用透镜聚焦足够多的光线.在使用的过程中,需要知道相机的焦距.成像中心以及 ...

  3. 解决Xshell显示中文乱码的问题

    执行echo $LANG命令输出的是当前的编码方式,执行locale命令得到系统中所有可用的编码方式.要让Xshell不显示乱码,则要将编码方式改为UTF-8. 在Xshell中[file]-> ...

  4. android之View绘制

    Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类,由此就得到了视图部分的基本结构--树形结构 View定义了绘图的基本 ...

  5. Android初级教程启动定时器详解

    本案例知识是:后台执行定时任务. Alarm机制: 一.创建LongRunningService类 package com.example.servicebestpractice; import ja ...

  6. iOS中 基于LBXScan库二维码扫描 韩俊强的博客

    每日更新关注:http://weibo.com/hanjunqiang  新浪微博 首先声明这个二维码扫描是借助于zxing. 功能模块都完全封装好了,不过界面合你口味,直接使用就好,如果不合口味,后 ...

  7. MVPHelper更新日志 --- 新增常规分包模式

    MVPHelper是一款可以自动生成MVP接口以及实现类的android studio插件,彻底解放双手! MVPHelper更新版本啦. 由于之前只支持contract模式,不是很符合大众口味 所以 ...

  8. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Xcode中打开MainScene.h文件,在接口中添加2个方 ...

  9. MTK机器原始OTA更新方法

    在源码中编译完成后会生成各类.img的文件,这时候make otapackage生成ota包 一般ota包在源码工程的out/target/...目录下 一.通过线刷模式 将生成OTA包拷贝到Wind ...

  10. Mahout推荐算法之ItemBased

    Mahout推荐之ItemBased 一.   算法原理 (一)    基本原理 如下图评分矩阵所示:行为user,列为item. 图(1) 该算法的原理: 1.  计算Item之间的相似度. 2.  ...