返回

带你走进Activity启动流程之Launcher篇

Android

引言

Activity是Android应用程序的基本构建模块之一,它代表了一个用户界面屏幕,并与用户进行交互。当用户点击应用图标时,ActivityManagerService(简称AMS)就会创建一个新的Activity实例,并将其置于栈顶。Activity的启动过程通常分为几个阶段:启动请求、创建Activity、启动Activity和恢复Activity。本文将从Launcher篇入手,深入剖析Activity启动流程,揭示AMS如何创建和管理Activity的生命周期,了解Activity启动模式的奥妙。

Launcher篇

Launcher是Android系统中负责启动应用程序的组件,它通常以图标的形式显示在主屏幕上。当用户点击应用程序图标时,Launcher就会向AMS发送一个启动请求。AMS收到启动请求后,会根据应用程序的配置信息创建一个新的Activity实例,并将其置于栈顶。如果应用程序已经存在于栈中,AMS就会恢复该Activity实例,并将其置于栈顶。

创建Activity

当AMS创建一个新的Activity实例时,它会调用Activity的onCreate()方法。onCreate()方法是Activity生命周期中的第一个方法,它负责初始化Activity。在onCreate()方法中,Activity可以进行一些必要的初始化操作,例如加载布局文件、初始化数据和设置监听器等。

启动Activity

当Activity的onCreate()方法执行完毕后,AMS会调用Activity的onStart()方法。onStart()方法是Activity生命周期中的第二个方法,它负责启动Activity。在onStart()方法中,Activity可以进行一些必要的启动操作,例如显示界面和获取焦点等。

恢复Activity

如果Activity已经存在于栈中,当用户再次点击应用程序图标时,AMS就会恢复该Activity实例,并将其置于栈顶。恢复Activity时,AMS会调用Activity的onRestart()方法和onResume()方法。onRestart()方法是Activity生命周期中的第三个方法,它负责重新启动Activity。onResume()方法是Activity生命周期中的第四个方法,它负责恢复Activity。

Activity启动模式

Activity启动模式决定了Activity在栈中的行为。Android系统提供了四种Activity启动模式:standard、singleTop、singleTask和singleInstance。

  • standard:这是默认的Activity启动模式。当Activity启动时,它会创建一个新的实例,并将其置于栈顶。
  • singleTop:当Activity启动时,如果栈顶的Activity是该Activity的实例,则不会创建一个新的实例,而是直接恢复栈顶的Activity实例。
  • singleTask:当Activity启动时,如果栈中存在该Activity的实例,则会将该实例移到栈顶,并销毁栈顶的其他Activity实例。
  • singleInstance:当Activity启动时,如果栈中存在该Activity的实例,则会直接恢复该实例,并销毁栈顶的其他Activity实例。

结语

Activity启动流程是一个复杂的过程,涉及到AMS和Activity生命周期的密切配合。通过对Activity启动流程的深入了解,我们可以更好地理解Android应用程序的启动行为,并编写出更加健壮的应用程序。