Android 进程启动原理
前言
Android 中的应用是支持多进程的,我们只要在 AndroidManifest 中给四大组件指定 android:process 属性即可让其运行在独立的进程当中。那么应用的主进程又是如何被创建的呢?一般来说,当我们的应用没有任何组件处于运行状态,此时其他应用启动我们应用的组件时,应用的主进程就会被创建,进程相当于是提供了组件运行的空间。最常见的触发应用主进程被创建的方式是应用 A 通过 startActivity 或者 startActivityForResult 启动应用 B,并且应用 B 此时没有任何组件处于运行状态,那么系统先会通过 AMS 为 B 创建一个进程,等进程创建好了再通知应用 B 创建并运行该 Activity。AMS 是运行在 system_server 进程当中的,这个进程并不会 fork 出应用进程,那么应用进程到底是哪个进程创建的呢?这就得从 Zygote 进程说起。