返回
深入浅析 Activity 生命周期与启动模式,开启安卓开发艺术探索之旅
Android
2023-11-19 11:09:42
前言
在安卓应用程序开发中,Activity 是应用的基本组成单元,负责用户界面的呈现和交互。理解和掌握 Activity 的生命周期及其启动模式对于开发人员构建稳定、可靠的应用程序至关重要。本文将从 Activity 生命周期的角度出发,详细解析 Activity 的四大启动模式,包括 standard、singleTop、singleTask 和 singleInstance,并深入探讨前后台任务栈的切换知识,帮助开发人员更好地理解和应用 Activity 的生命周期和启动模式。
Activity 生命周期
Activity 生命周期是指 Activity 从创建到销毁的整个过程,它由七个不同的状态组成:
- onCreate(): 当 Activity 首次创建时调用,用于初始化 Activity。
- onStart(): 当 Activity 即将变得可见时调用,用于准备 Activity 的可见状态。
- onResume(): 当 Activity 完全可见时调用,用于继续 Activity 的交互。
- onPause(): 当 Activity 即将变得不可见时调用,用于保存 Activity 的状态。
- onStop(): 当 Activity 完全不可见时调用,用于释放 Activity 的资源。
- onDestroy(): 当 Activity 被销毁时调用,用于清理 Activity 的状态和资源。
- onRestart(): 当 Activity 重新启动时调用,用于恢复 Activity 的状态。
启动模式
启动模式决定了 Activity 在被启动时如何处理已存在的实例。安卓提供了四种启动模式:
- standard: 这是默认的启动模式,当启动一个新的 Activity 时,无论该 Activity 是否已经存在,都会创建一个新的实例。
- singleTop: 当启动一个新的 Activity 时,如果该 Activity 已经在任务栈顶端,则不会创建新的实例,而是直接调用 onNewIntent() 方法。
- singleTask: 当启动一个新的 Activity 时,如果该 Activity 已经在任务栈中,无论其位置,都会将该 Activity 移动到任务栈顶端,并调用 onNewIntent() 方法。
- 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 已经在任务栈中,无论其位置,都会创建一个新的实例,并将其置于任务栈顶端。 |