首页 > 代码库 > Android技术20:Android的初始化流程

Android技术20:Android的初始化流程

Android系统是如何启动的呢,应用程序是如何启动。下面简要介绍下初始化流程。

1.Android系统的初始化

1.1Android系统会首先启动Linux基础系统,然后引导加载Linux内核并启动初始化进程Init

Linux Kernel---->Init(pid=1)

1.2启动守护进程Daemons

    启动Usb守护进程,管理USB连接

    启动Android Debug Bridge守护进程管理ADB连接

    启动Debuggerd Debug守护进程

    启动无线接口守护进程管理无线通信

1.3启动守护进程的同时,会启动Zygote进程

    创建初始化Dalvik初始化实例

    加载socket请求的需要的类和监听

    创建虚拟机实例来管理应用程序的进程

 

         |  Daemons

init----

         |  Zygote

1.4接下来,初始化Runtime进程

     初始化服务管理器Service Manager

     注册服务管理器,以它作为默认的Binder服务Context管理器

1.5启动系统服务System Service

     Runtime向Zygote发送一个请求,Zygote为系统服务创建一个Dalvik虚拟机实例,并启动系统服务,系统服务将启动原生系统服务,主要包括Audio Flinger和Surface Flinger,这些本地系统服务将注册到服务管理器。系统服务将启动Android管理服务,将管理服务都被注册到服务管理器上。

1.6系统加载完成,等待应用程序启动

1.7Activity Manager管理器向Zygote发出一个Socket请求,Zygote通过fork机制创建一个Dalvik虚拟机进程,来运行应用程序

    所有的应用程序进程都是Zygote进程的子进程,每一个应用程序一个进程一个虚拟机。