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

Android的启动过程分析(从进程和Framework的角度)-android学习之旅(98)_第1张图片

1.linux内核:

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

2.init

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

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

Android的启动过程分析(从进程和Framework的角度)-android学习之旅(98)_第2张图片

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程序,出现开机桌面。

更多相关文章

  1. 通过广播Intent控制Android系统自带的音乐播放器
  2. Android系统升级全流程
  3. 在Ubuntu16.04上下载并编译Android内核源代码
  4. Android 根文件系统启动过程(init进程 详细分析)
  5. Android输入子系统之启动过程分析
  6. Android中系统状态栏的隐藏和显示
  7. 从Android 8.0源码的角度剖析Android系统启动过程(1)
  8. 【Android】Android插件开发 —— 打开插件的Activity(Hook系统方
  9. 移植goahead到android或其他嵌入式linux系统上

随机推荐

  1. Android NDK 简介(Android NDK 教程 一)
  2. 《Android系统学习》第十一章:Android应用
  3. 工具收藏
  4. [置顶] 入门Android开发--android基础
  5. 学习新手给Android新手的一些学习建议
  6. android 布局xml中 android:fitsSystemWi
  7. tools:context=".MainActivity的作用
  8. Android 配置环境变量
  9. android SD卡读写权限
  10. Android监听网络变化