Activity的启动方式分别是:standard,singleTop,singleTask,singleInstance
如果需要修改Activity的启动方式,需要在AndroidManifest中配置Activity的 android:launchMode属性
Activity的默认启动方式是standard,这种启动方式启动Activity时,每启动一个Activity都会创建一个Activity的实例
singleTop是如果启动Activity时,如果该Activity在栈顶的话,就复用该Activity。但是如果该Activity不在栈顶,还是会启动一个新的该Activity实例。
singleTask是不管该Activity在不在栈顶,只要有该Activity存在,就将其他Activity推出栈,然后将这个Activity置顶,复用这个Activity
singleInstance 这个启动方式是将使用这种启动方式的Activity放入另外一个任务栈中,与其他Activity不在一个栈中。
例如A启动 B ,B是使用singleInstance启动方式的,然后B启动C,C点击返回时会直接返回到A,而不会返回到B
Intent标志位
intent.setFlags(XXXXX);
1、Intent.FLAG_ACTIVITY_SINGLE_TOP
跟加载模式中singleTop栈顶单实例类似
2、Intent.FLAG_ACTIVITY_CLEAR_TOP
跟加载模式中singleTask区别:
如果activity已经存在,并处于栈中,会把目标Activity 之上的所有Activity都销毁(包括自身),重新创建一个新的Activity
3、Intent.FLAG_ACTIVITY_NEW_TASK
如果在service中跳转Activity,必须去设置意图标志位
Intent.FLAG_ACTIVITY_NEW_TASK