Android系统和APP的启动过程:
Android系统的启动过程
BootLoader → Kernel → init → Native daemons → Android Runtime → Zygote → System Server → Activity Manager
App 启动过程
click launcher → startActivity() → startViaZygote() → fork()
- Linux内核
Android 是基于Linux内核的系统平台,启动时,首先通过BootLoader(系统加载器),加载Linux内核。在Linux加载启动时,先初始化内核,然后调用init进程。 - init 进程
Android init 进程对各种设备进行初始化,运行Android Framework所需用的各种Daemon、Context Manager、Media Server、 Zygote等。 - Zygote
Zygote 进程用于缩短Android应用程序加载的时间,每当执行Java 应用程序时,Zygote 就会派生出一个子进程来执行应用程序,该子进程就是用来执行 Java 应用程序的虚拟机。 - System Server
System Server 是Android 系统的一个核心进程,他有Zygote 进程创建,在Android 启动过程中位于 Zygote 之后。它建立了Android中的大部分服务,如Activity Manager Service, Location Manager Service。
Zygote
Android APP使用Java编写的,只能运行在虚拟机中。并且,每个应用程序都运行在各自的虚拟机中,应用程序每次运行都要重新初始化并启动虚拟机,这个过程会耗费相当成时间,是拖慢应用程序的原因之一。Zygote进程通过共享已运行的虚拟机的代码与内存信息,缩短应用程序所耗费的时间。并且, 它会时间将应用程序要使用的Android Framework中的类与资源(框架中的类、平台资源、XML信息、字符串等)加载到内存中,新进程直接使用这些类与资源,而不需要重新加载它们,这大大加快了程序的执行速度。
参考文献:《Android 框架解密》
网友评论