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进程的子进程,每一个应用程序一个进程一个虚拟机。
Android技术20:Android的初始化流程,布布扣,bubuko.com