摘自:《android 第一行代码》
Activity 定义
- Activity 是 Android 四大组件之一。
- Activity 是一种包含用户界面的组件,主要用于和用户进行交互。
Android 中的 Activity 管理机制
Android 中使用任务管理活动,一个任务就是一组存放在栈中的活动的集合,这个栈被称为返回栈,满足 LIFO 原则。
在默认情况下,每当我们启动一个新的活动,它会在返回栈中入栈并处于栈顶的位置。而每当我们按下 back 或者 finish() 方法销毁一个活动时,处于栈顶的活动会出栈,这是前一个入栈的活动就会重新处于栈顶的位置。
系统总是会显示处于栈顶的活动给用户。
Activity 生命周期
Activity 一个完整的生命周期会有以下状态
- 运行状态:当一个活动位于返回栈栈顶时,这个活动就处于运行状态。
- 暂停状态:当一个活动不处于栈顶,但仍然可见时,这个活动处于暂停状态。
- 停止状态:当一个活动不处于栈顶,并且完全不可见时,这个活动处于停止状态。
- 销毁状态:当一个活动从返回栈移除后,这个活动处于销毁状态。
Activity 一个完整的生命周期内会调用的函数有
- onCreate():在活动第一次创建时被调用。用于加载布局,绑定事件。
- onStart():在活动由不可见变为可见时调用。
- onResume():在活动准备好和用户进行交互的时候调用。此时活动一定处于返回栈的栈顶,并且处于运行状态。
- onPause():在系统准备去启动或者恢复另一个活动时调用。
- onStop():在活动完全不可见的时候调用。
- onDestroy():在活动被销毁之前调用。
- onRestart():在活动由停止状态变为运行状态之前调用。
Activity 启动模式
- standard:活动的默认启动模式。在 Standard 模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用 Standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。
- singleTop 模式:当活动的启动模式指定为 singleTop,在启动活动时如果发现返回栈的栈顶已经时该活动,则认为可以直接使用它,不会重新创建新的活动实例。在使用 singleTop 功能时需要在 AndroidManifest.xml 文件中添加如下设置:
<activity
android:name=".sample_activity"
android:launchMode="singleTop">
</activity>
- singleTask 模式:当活动的模式指定为 singleTask,每次启动该活动时,系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的实例。在使用 singleTop 功能时需要在 AndroidManifest.xml 文件中添加如下设置:
<activity
android:name=".sample_activity"
android:launchMode="singleTask">
</activity>
- singleInstance 模式:singleInstance 模式常用于需要与其他应用共享活动实例的场合。当活动指定为 singleInstance,系统会启用一个新的返回栈管理这个活动。
<activity
android:name=".sample_activity"
android:launchMode="singleInstance ">
</activity>