一、SingleTask
SingleTask 所有的入栈、出栈操作都在同一个Activity栈中进行。
1、ActivityA 与ActivityB 在同一个应用
- 任务栈中存在ActivityB ,则不会创建新的,直到使用它(调用onNewIntent),并将它之上的Activity出栈。
- 任务栈中不存在ActivityB,则在栈顶新建一个
2、ActivityA 在应用A中,ActivityB 在应用B中
- 应用B处于后台,而且应用B的任务栈(后台栈)中存在ActivityB ,则应用B任务栈中的ActivityB 及其之下的所有Activity将一起被切换到应用A的任务栈(前台栈)
引用官网的图片如下:
Back Stack 为应用A的任务栈,是前台任务栈。Activity2 为ActivityA .
Backgroud Task 栈为应用B的任务栈,在后台,ActivityY 为ActivityB

二、SingleInstance 所有的Activity栈中只存在一个特定的Activity.
ActivityA启动ActivityB(SingleInstance模式):
该模式不区分ActivityA与ActivityB是否位于同一个应用
-
所有任务栈中不存在ActivityB,则ActivityB会在新的任务栈中创建,并且该任务栈始终只有ActivityB,ActivityB启动其他Activity会被放到另外的任务栈
-
某个任务栈中存在ActivityB,则直接利用。
参考文章:
https://blog.csdn.net/weixin_40855673/article/details/80630634
网友评论