返回

深入浅析 Activity 生命周期与启动模式,开启安卓开发艺术探索之旅

Android

前言

在安卓应用程序开发中,Activity 是应用的基本组成单元,负责用户界面的呈现和交互。理解和掌握 Activity 的生命周期及其启动模式对于开发人员构建稳定、可靠的应用程序至关重要。本文将从 Activity 生命周期的角度出发,详细解析 Activity 的四大启动模式,包括 standard、singleTop、singleTask 和 singleInstance,并深入探讨前后台任务栈的切换知识,帮助开发人员更好地理解和应用 Activity 的生命周期和启动模式。

Activity 生命周期

Activity 生命周期是指 Activity 从创建到销毁的整个过程,它由七个不同的状态组成:

  1. onCreate(): 当 Activity 首次创建时调用,用于初始化 Activity。
  2. onStart(): 当 Activity 即将变得可见时调用,用于准备 Activity 的可见状态。
  3. onResume(): 当 Activity 完全可见时调用,用于继续 Activity 的交互。
  4. onPause(): 当 Activity 即将变得不可见时调用,用于保存 Activity 的状态。
  5. onStop(): 当 Activity 完全不可见时调用,用于释放 Activity 的资源。
  6. onDestroy(): 当 Activity 被销毁时调用,用于清理 Activity 的状态和资源。
  7. onRestart(): 当 Activity 重新启动时调用,用于恢复 Activity 的状态。

启动模式

启动模式决定了 Activity 在被启动时如何处理已存在的实例。安卓提供了四种启动模式:

  1. standard: 这是默认的启动模式,当启动一个新的 Activity 时,无论该 Activity 是否已经存在,都会创建一个新的实例。
  2. singleTop: 当启动一个新的 Activity 时,如果该 Activity 已经在任务栈顶端,则不会创建新的实例,而是直接调用 onNewIntent() 方法。
  3. singleTask: 当启动一个新的 Activity 时,如果该 Activity 已经在任务栈中,无论其位置,都会将该 Activity 移动到任务栈顶端,并调用 onNewIntent() 方法。
  4. singleInstance: 当启动一个新的 Activity 时,如果该 Activity 已经在任务栈中,无论其位置,都会创建一个新的实例,并将其置于任务栈顶端。

前后台任务栈

安卓系统使用任务栈来管理 Activity。任务栈是一个有序的 Activity 列表,当用户在应用程序中导航时,系统会将 Activity 添加到任务栈中。当前可见的 Activity 位于任务栈的顶端。

当用户按后退键时,系统会从任务栈中移除顶部的 Activity,并将下一个 Activity 置于任务栈顶端。当用户按主页键时,系统会将当前 Activity 置于后台,并将最近使用的 Activity 置于任务栈顶端。

总结

Activity 生命周期和启动模式是安卓开发人员必须掌握的基础知识。通过理解和应用 Activity 的生命周期和启动模式,开发人员可以构建更稳定、更可靠的应用程序。

附录

附录 A:Activity 生命周期图表

下图展示了 Activity 生命周期各个状态之间的转换关系:

[图片]

附录 B:启动模式示例

下表列举了四种启动模式的示例:

启动模式 示例
standard 启动一个新的 Activity,创建一个新的实例。
singleTop 启动一个新的 Activity,如果该 Activity 已经在任务栈顶端,则不会创建新的实例,而是直接调用 onNewIntent() 方法。
singleTask 启动一个新的 Activity,如果该 Activity 已经在任务栈中,无论其位置,都会将该 Activity 移动到任务栈顶端,并调用 onNewIntent() 方法。
singleInstance 启动一个新的 Activity,如果该 Activity 已经在任务栈中,无论其位置,都会创建一个新的实例,并将其置于任务栈顶端。