Android的启动过程分析(从进程和Framework的角度)-android学习之旅(98)
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)的更多相关文章
- android activity 启动过程分析(source code 4.4)
说实话,android source code从2.3到4.4变化是蛮多的,尤其是media部分,虽然总的框架是没有多大变化,但是找起代码来看还是挺麻烦的.在android里面最受伤的是使用了java ...
- Android移动后端服务(BAAS)快速搭建后台服务器之Bmob-android学习之旅(75)
个人移动开发者的最头疼的问题,就是App的网络后台,包含数据库等,国外目前有比较成熟的解决方案,但是限制于墙的问题,推荐国内的解决方案,比较出名的是Bmob和AVOS cloud和Atom等,这一次我 ...
- Android的Context Manager(服务管理器)源码剖析-android学习之旅(99)
Context Manager介绍 Context Manager对应的进程是servicemanager进程,它先于Service Server和服务客户端运行,进入接收IPC数据的待机状态,处理来 ...
- Android Binder IPC详解-Android学习之旅(96)
linux内存空间与BInder Driver Android进程和linux进程一样,他们只运行在进程固有的虚拟空间中.一个4GB的虚拟地址空间,其中3GB是用户空间,1GB是内核空间 ,用户空间是 ...
- Android系统服务详解-android学习之旅(95)
本文是看完android框架揭秘第六章后的总结 android系统服务提供最基本的,最稳定的核心功能,如设备控制,信息通知,通知设定,以及消息显示等,存在于Android Framework与Andr ...
- Android Activity 启动模式详解
最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了 ...
- Zygote和System进程的启动过程、Android应用进程启动过程
1.基本过程 init脚本的启动Zygote Zygote进程的启动 System进程的启动 Android应用进程启动过程 2.init脚本的启动 +------------+ +-------+ ...
- 开机SystemServer到ActivityManagerService启动过程分析
开机SystemServer到ActivityManagerService启动过程 一 从Systemserver到AMS zygote-> systemserver:java入层口: /** ...
- ActivityManagerService启动过程分析
之前讲Android的View的绘制原理和流程的时候,讲到过在Android调用setContentView之后,Android调用了一个prepreTravle的方法,这里面就提到了Activity ...
随机推荐
- Spark调度模式-FIFO和FAIR
Spark中的调度模式主要有两种:FIFO和FAIR.默认情况下Spark的调度模式是FIFO(先进先出),谁先提交谁先执行,后面的任务需要等待前面的任务执行.而FAIR(公平调度)模式支持在调度池中 ...
- OpenCV相机标定
标签(空格分隔): Opencv 相机标定是图像处理的基础,虽然相机使用的是小孔成像模型,但是由于小孔的透光非常有限,所以需要使用透镜聚焦足够多的光线.在使用的过程中,需要知道相机的焦距.成像中心以及 ...
- 解决Xshell显示中文乱码的问题
执行echo $LANG命令输出的是当前的编码方式,执行locale命令得到系统中所有可用的编码方式.要让Xshell不显示乱码,则要将编码方式改为UTF-8. 在Xshell中[file]-> ...
- android之View绘制
Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类,由此就得到了视图部分的基本结构--树形结构 View定义了绘图的基本 ...
- Android初级教程启动定时器详解
本案例知识是:后台执行定时任务. Alarm机制: 一.创建LongRunningService类 package com.example.servicebestpractice; import ja ...
- iOS中 基于LBXScan库二维码扫描 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博 首先声明这个二维码扫描是借助于zxing. 功能模块都完全封装好了,不过界面合你口味,直接使用就好,如果不合口味,后 ...
- MVPHelper更新日志 --- 新增常规分包模式
MVPHelper是一款可以自动生成MVP接口以及实现类的android studio插件,彻底解放双手! MVPHelper更新版本啦. 由于之前只支持contract模式,不是很符合大众口味 所以 ...
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Xcode中打开MainScene.h文件,在接口中添加2个方 ...
- MTK机器原始OTA更新方法
在源码中编译完成后会生成各类.img的文件,这时候make otapackage生成ota包 一般ota包在源码工程的out/target/...目录下 一.通过线刷模式 将生成OTA包拷贝到Wind ...
- Mahout推荐算法之ItemBased
Mahout推荐之ItemBased 一. 算法原理 (一) 基本原理 如下图评分矩阵所示:行为user,列为item. 图(1) 该算法的原理: 1. 计算Item之间的相似度. 2. ...