Android系统启动流程简介

http://blog.csdn.net/shulianghan/article/details/38895481
一. Android 底层系统启动流程(Bootloader Kernel init)

二. Android 上层系统启动流程

1. Android 上层系统启动简介

 

启动流程 : init 进程启动 -> 启动 Android 系统本地服务(Native Service) -> Zygote进程 -> Android 系统服务(System Service) -> HomeActivity 启动;

从上面的调用图可知有三个地方调用了启动Launcher的方法,这三个方法中首次启动应该是中间的那个systemReady方法,系统准备过程中调用启动Launcher,我们看一下systemReady方法是哪里调用的来验证一下:

2. 启动 Native Service (本地服务)

Native Service 简介

-- 启动进程 : 由 init 启动, 是 C/C++ 实现的;

-- 主要作用 : 本地服务 是 Android 内核Android 应用 通信 的通道, 两层之间通过 socket 进行通信;

 

Native Service 提供的服务 : 其启动项定义在 init.rc 中;

-- Console : shell console 服务;

-- Service Manager : Binder 服务管理器, 管理所有的 Android 系统服务;

-- Vold : 支持外设热插拔服务;

-- Mountd : 设备安装 状态通知服务;

-- Debuggerd : 处理调试进程请求服务;

-- Rild : 无线接口层服务;

-- Zygote : 启动 Dalvik 并创建其它进程服务;

-- MediaServer : 多媒体相关服务;

 

 

3. Zygote 进程启动

 

Zygote 进程简介 : Zygote 由 init 进程创建, init.rc 中配置了 Zygote 的创建参数;

-- init.rc 中配置 : Zygote 原始名称是 "app_process", 启动中改名为 Zygote;

 

service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server

 

 

Zygote 作用

-- 本质 : Zygote 进程是一个虚拟的进程, 是虚拟实例(Dalvik虚拟机)的孵化器;

-- 操作 : Zygote 负责 Dalvik 虚拟机初始化, 预置类库加载等操作;

-- 应用启动处理 : 每个 Android 应用启动时, Zygote 会创建一个子进程(Dalvik虚拟机)执行它;

-- 节省内存策略 : Android 中有些系统库是只读的, 所有的 Dalvik 虚拟机都可以共享这些只读系统库;

 

 

4. Android System Service 启动

Android 系统服务

-- 启动 : Android System Service 是 Zygote 进程第一个子进程, 由 Zygote 进程孵化而来;

-- 作用 : System Service 是 Android 框架核心, 负责 Android 系统初始化 启动其它服务;

-- 其它服务 : System Service 孵化的其它服务运行在对应 Dalvik 虚拟机进程的空间里;

-- init.rc 配置 : 在 Zygote 配置中 "--start-system-server" 参数用来实现 System Service 的启动;

 

5. 启动 HomeActivity 主界面

 

Launcher 应用程序 : 该应用程序就是 HomeActivity 所在的程序;

-- 启动 : Launcher 由 Activity Manager Service 启动, 启动流程 System Service -> Activity Manager Service -> Launcher;

-- 展示图标 : Launcher 启动后就会将已经安装的 app 程序的快捷图标展示到桌面;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值