返回

揭秘安卓Activity启动流程,详尽源码剖析,一文吃透

Android

Activity启动流程概述

当用户从Launcher中启动一个应用时,整个Activity启动流程就开始了。这个过程涉及到多个组件的协同工作,包括ActivityManagerService、WindowManagerService、Launcher、Activity和Application等。

  1. 用户点击应用图标 :用户点击应用图标时,Launcher会向ActivityManagerService发送一个请求,要求启动该应用。
  2. ActivityManagerService接收请求 :ActivityManagerService接收到请求后,会创建一个新的进程来启动应用。在这个过程中,ActivityManagerService还会创建一个新的任务栈,并把应用的第一个Activity压入任务栈顶。
  3. 进程创建 :当ActivityManagerService创建新的进程时,会调用zygote进程来创建该进程。zygote进程是一个特殊的进程,它专门用于创建新的进程。
  4. ActivityThread初始化 :在新的进程中,会创建一个ActivityThread对象。ActivityThread是Activity生命周期的管理者,它负责Activity的启动、停止、销毁等操作。
  5. Application对象创建 :ActivityThread会创建一个Application对象。Application对象是整个应用的入口,它负责应用的初始化工作,包括加载资源、初始化组件等。
  6. Activity对象创建 :ActivityThread会创建一个Activity对象。Activity对象是Activity生命周期的核心,它负责Activity的启动、停止、销毁等操作。
  7. Activity生命周期启动 :ActivityThread会调用Activity的onCreate()方法,标志着Activity生命周期的开始。
  8. Activity布局加载 :在onCreate()方法中,Activity会加载布局文件,并将布局文件中的控件添加到Activity中。
  9. Activity生命周期继续 :ActivityThread会继续调用Activity的onStart()和onResume()方法,标志着Activity生命周期的继续。
  10. 用户与Activity交互 :用户可以通过Activity中的控件与Activity进行交互,如点击按钮、输入文本等。
  11. Activity生命周期结束 :当用户离开Activity时,ActivityThread会调用Activity的onPause()、onStop()和onDestroy()方法,标志着Activity生命周期的结束。

源码剖析

Activity启动流程涉及的源码非常复杂,这里只列举几个关键的类和方法:

  • ActivityManagerService :负责管理Activity的生命周期和进程。
  • WindowManagerService :负责管理窗口的显示。
  • Launcher :负责启动应用。
  • Activity :Activity的基类,负责Activity的生命周期。
  • Application :应用的入口,负责应用的初始化工作。
  • ActivityThread :负责Activity的生命周期管理。

启动模式

Activity启动模式有四种:

  • standard :标准模式,每次启动Activity都会创建一个新的实例。
  • singleTop :单顶模式,如果Activity已经在任务栈顶,则不会创建新的实例,而是直接复用现有的实例。
  • singleTask :单任务模式,如果Activity已经在任务栈中,则不会创建新的实例,而是将该Activity移动到任务栈顶。
  • singleInstance :单例模式,整个系统中只能存在一个Activity实例。

任务栈

任务栈是Activity的容器,它记录了用户启动过的所有Activity。每个应用都有一个自己的任务栈,互不干扰。

生命周期

Activity的生命周期包括四个阶段:

  • onCreate() :Activity被创建时调用。
  • onStart() :Activity变得可见时调用。
  • onResume() :Activity获得焦点时调用。
  • onPause() :Activity失去焦点时调用。
  • onStop() :Activity变得不可见时调用。
  • onDestroy() :Activity被销毁时调用。

总结

Activity启动流程是安卓开发的基础,掌握Activity启动流程的原理和机制对开发者非常重要。通过本文的讲解,希望您对Activity启动流程有了更深入的理解。