Android 应用的启动流程如下:
当用户点击应用图标时,首先会通过 Launcher(桌面启动器)来响应这个操作。Launcher 本身也是一个 Android 应用,它运行在系统中,负责管理和显示桌面上的图标等信息。
系统会检查应用是否已经有进程存在。如果没有,就会通过 Zygote 进程来孵化一个新的进程。Zygote 是一个特殊的进程,它在系统启动时就已经被创建,其主要作用是通过复制自身来快速创建应用进程,并且在复制过程中会共享一些已经加载好的类和资源,这样可以加快应用的启动速度。
新的应用进程创建后,会加载 ActivityThread 类,这个类是应用的主线程,主要负责管理和分发各种消息,如 Activity 的生命周期方法的调用等。接着会通过 Instrumentation 来创建 Application 对象,这个对象代表了整个应用,在其创建过程中会调用 Application 的 onCreate 方法,在这里可以进行一些全局的初始化操作,比如初始化第三方库等。
然后开始创建启动的 Activity,首先会通过 ActivityManagerService(AMS)进行一系列的验证和准备工作。AMS 会检查 Activity 的配置信息,确保其能够正确启动。之后