一、启动Linux基础系统,然后引导加载Linux Kernel并初始化进程(init)
二、启动Linux守护进程(daemons)
启动USB守护进程(usbd):管理USB连接
启动Android Debug Bridge守护进程(adbd):管理ADB连接
启动Debug守护进程(debuggerd):管理调试进程请求
启动无线接口守护进程(rild):管理无线通信
同时启动Zygote进程:
1.初始化一个Dalvik虚拟机实例
2.装载Socket请求所需的类和监听
3.创建虚拟机实例来管理应用程序的进程
三、初始化runtime进程
1.初始化服务管理器(Service Manager)
2.注册服务管理器,以它作为默认的Binder服务的Context管理器
runtime进程初始化之后,发送一个请求到Zygote,开启系统服务,此时Zygote为系统服务(System Server)建立一个虚拟机实例,并启动系统服务。
系统服务启动原生系统服务,主要包括Surface Flinger和Audio Flinger。这些本地系统服务都将注册到服务管理器作为IPC的服务目标。
系统服务启动Android管理服务,并注册到服务管理器上。
系统加载完所有服务后处于等待状态,等待程序运行。
注释:内容来自《Android技术内幕》
网友评论