Activity的四种加载模式(附:Intent标记位)
Activity是Android底层架构中的一个核心组件,它在安卓应用开发中扮演了非常重要的角色。在Android系统中,Activity是作为一个Activity栈来管理的,而每次启动Activity都会创建一个新的实例并添加到其所在线程的栈顶。
在Android应用开发中,Activity的加载模式涉及到应用程序的配置和用户与应用程序的交互,影响到应用程序的交互和用户体验。
下面将介绍一下Activity的四种加载模式以及Intent标记位的相关知识。
1. 标准模式(standard)
在标准模式中,每次启动一个Activity都会创建一个新的实例。如果当前栈中已经存在该Activity的实例,则该实例会被带到栈顶。继续启动相同的Activity会重新创建新的实例并添加到栈顶,因此一个Activity可以被多次实例化。
Intent的标记位:
- FLAG_ACTIVITY_NEW_TASK:如果在应用程序的任务栈中不存在该Activity,则启动一个新的任务栈来启动该Activity。
2. 栈顶复用模式(singleTop)
在栈顶复用模式中,如果目标Activity已经在栈顶,则无需重新创建实例。目标Activity会直接回调onNewIntent方法来处理新的Intent。
Intent的标记位:
- FLAG_ACTIVITY_SINGLE_TOP:如果目标Activity已经在栈顶,则无需重新创建实例。
3. 栈内复用模式(singleTask)
在栈内复用模式中,系统会为该Activity创建一个新的任务栈,当我们启动该Activity时,如果该Activity在当前任务栈中已经存在,则不会再创建新的实例,而是把该Activity移动到栈顶并回调onNewIntent方法来处理新的Intent。
Intent的标记位:
- FLAG_ACTIVITY_SINGLE_TASK:如果该Activity在当前任务栈中已经存在,则把该Activity移动到栈顶并回调onNewIntent方法来处理新的Intent。
4. 单实例模式(singleInstance)
在单实例模式中,系统会为该Activity创建一个新的任务栈并且只能有一个实例存在于该任务栈中,无论该Activity是被系统调用还是被其他应用调用,都只会存在一个实例,其他应用启动该Activity时会跳转到该Activity所在的任务栈中。
Intent的标记位:
- FLAG_ACTIVITY_NEW_TASK:如果在应用程序的任务栈中不存在该Activity,则启动一个新的任务栈来启动该Activity。
- FLAG_ACTIVITY_CLEAR_TOP:将所在Task中所有位于该Activity实例上方的Activity全部清除。
