也说Activity任务栈

一、启动模式

我们知道Activity有4种启动模式(launchMode):

  1. standard
  2. singleTop
  3. singleTask
  4. singleInstance

我们可以在Androidmanifest.xml里面为配置android:launchMode为以上四种之一即可。

standard

standard 是默认的启动模式,可以不指定android:launchMode
利用startActivity启动该Activity,不管栈里有没有该Activity的实例,都会创建新的实例

也说Activity任务栈_第1张图片
standard模式示意图.png

(引用图片)

singleTop

指定属性android:launchMode="singleTop",系统就会按照singleTop启动模式处理跳转行为。
当目标Activity在站内有实例且位于栈顶时,再次启动不会创建新的实例,而是直接使用栈顶的实例。

也说Activity任务栈_第2张图片
FirstActivity位于栈顶,再次启动不会创建新实例.png

当目标Activity在栈内有实例,但不是位于栈顶时,再次启动就会创建新的实例。

也说Activity任务栈_第3张图片
从SecondActivity启动FirstActivity, FirstActivity创建新的实例.png

SingleTask

在上面的基础上我们修改FirstActivity的属性android:launchMode="singleTask"。
当目标activity在栈内有实例时,就会清除该实例上面的所有其他Activity实例, 使目标activity实例位于栈顶,并显示在幕前。

也说Activity任务栈_第4张图片
从SecondActivity跳转到FirstActivity时,SecondActivity出栈,原来的FirstActivity位于栈顶.png

SingleInstance

这是一种特殊的启动模式,目标Activity会在新的任务栈中创建并且保证不再有其他的Activity进入。

二、Intent Flags

...(待续)

你可能感兴趣的:(也说Activity任务栈)