1. Activity LaunchMode
- standard 标准模式
- singleTop 栈顶复用模式
-
singleTask 栈内复用模式
一个栈内只有相同Activity只有一个实例,可以通过TaskAffinity
指定栈。TaskAffinity默认是应用包名。 -
singleInstance 单实例模式
特殊的singleTask,此模式的Activity只能单独的位于一个栈中,所以全局只会有一个Activity。
举例
Activity_A,standard,默认栈
Activity_B,Activity_C,singleTask,指定TaskAffinity com.zxz.task_another
启动流程及Activity栈状态:
->A:[A]
->B:[B][A]
->C:[CB][A]
->A:[ACB][A]
->B:[B][A]
2. Activity的Flags
-
FLAG_ACTIVITY_NEW_TASK
相当于singleTask -
FLAG_ACTIVITY_SINGLE_TOP
相当于singleTop -
FLAG_ACTIVITY_CLEAR_TOP
singleTask启动模式默认就具有此标记位的效果 -
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
等价于在XML中指定Activity的属性android:excludeFromRecents="true"
具有这个标记的Activity不会出现在历史Activity的列表中,用户无法通过历史列表回到这个Activity
网友评论