相关定义
- standard。默认使用的模式,无论此 activity 是否已经存在于任务栈中,都会新建这个 activity 的实例。
- singleTask。栈内复用模式。若要启动的 activity 已经存在于任务栈中,则弹出至栈顶且在 activity 之上的 同一栈内的 activity 都会出栈。onNewIntent() 方法会被回调,onStart() 和 onResume() 也会被回调。
- singleTop 。栈顶复用模式。若要启动的 activity 处于 它的任务栈的栈顶,则不会创建新的实例。onNewIntent() 会被回调,onStart()、onResume() 方法也会被调用。
- singleInstance。单实例任务栈模式。此模式下的 activity 单独开启任务栈,这个任务栈只有该 activity 一个实例。后续对 该 activity 的启动都不会创新新的实例,直接复用。onNewIntent() 会被回调(已验证)。
相关任务栈的打印验证
- MainActivity 与 ThirdActivity 使用默认-standard模式,SecondActivity 设置了singleInstance模式,相关任务栈:
可以看到 SecondActivity 处于单独的任务栈中,而 ThirdActivity 处于 与 Main 相同的任务栈中。
- ThirdActivity 跳转至设置了 singleTask 模式的 MainActivity,相关任务栈:
可以看到 ThirdActivity 直接被弹出任务栈,设置了singleInstance 模式的 SecondActivity 不受影响。
- ThirdActivity 跳转至设置了 singleTop 模式的 MainActivity ,相关任务栈:
MainActivity 不处于任务栈的栈顶,从而创建一个新的 MainActivity 的实例。