也说Activity任务栈
2016-12-13 本文已影响2人
东风四幺
一、启动模式
我们知道Activity有4种启动模式(launchMode):
- standard
- singleTop
- singleTask
- singleInstance
我们可以在Androidmanifest.xml里面为<Activity>配置android:launchMode为以上四种之一即可。
standard
standard 是默认的启动模式,可以不指定android:launchMode
利用startActivity启动该Activity,不管栈里有没有该Activity的实例,都会创建新的实例。

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

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

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

SingleInstance
这是一种特殊的启动模式,目标Activity会在新的任务栈中创建并且保证不再有其他的Activity进入。
二、Intent Flags
...(待续)