1、standard模式
standard模式为activity默认模式,在此模式下,每次启动该activity都会入栈,多次启动会在栈内创建多个该activity,点击back键会依次出栈。
2、singleTop模式
第一种方式看起来有点傻,所以Android又为activity提供了singleTop模式,当activity被指定了此模式后,如果该activity位于栈内顶端每次启动该activity不会重新入栈,就不会出现栈内创建多个该activity的情况,但如果该activity不处在栈内顶端,当再次启动该activity时,仍然会重新入栈。
3、singleTask模式
第二种方式无法解决activity不在栈顶端时activity重复入栈的情况,所以Android又为activity提供了singleTask模式,当栈内有此模式下的activity时,再次启动该activity不会创建新的activity,而是直接将之前已经存在的activity置于栈顶,但要注意的是如果该activity上面有其他activity时,这些activity会被统统出栈。
4、singleInstance模式
singleInstance可以理解为singleTask的加强版,它具备singleTask的所有特性,在此模式下的activity在启动时会被放置在一个单独的任务栈中。
5、其它
5.1 activity启动模式使用
可以在xml配置文件中指定或者在intent启动时指定启动模式
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.Fullscreen.Translucent" />
Intent intent =new Intent(CaseSetActivity.this,CaseActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
5.2 TaskAffinity属性
singleTask模式可以与TaskAffinity配合使用,指定这两种属性的activity会运行在TaskAffinity指定的任务栈中并具备singleTask特性。