启动模式有四种:standard、singleTop、singleTask、singleInstance
设置方式:在AndroidManifest.xml 中通过给<activity> 标签指定android:launchMode 这个属性选择启动模式
1.standard :activity的默认启动模式,每一个新启动的activity都会在栈顶
举例: A》B》C 当我们从C依次按下返回键 C》B》A 先入后出
2.singleTop 在启动活动时候,如果发现返回栈的栈顶已经是该活动,则认为可以直接用这个活动,不用再创建新的活动实例
举例:(1) A》A》A 此时如果按返回键 直接finish()返回之前的活动,或者退出程序;
(2)A》B》C 此时启动A,因为A没有在栈顶,需要从新生成一个A的实例,变成A》B》C》A。依次按返回键 A》C》B》A
singleTop 可以解决重复创建栈顶活动问题
3.singleTask :每次启动该活动时候系统首先在返回栈中检查是否存在该活动的实力,如果发现已经存在则直接使用该实例,并把这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。
举例:A》B 这时候我们在B中从新启动一个A。 但是执行的方法却是B的onDestory() 、A的onRestart();
4.singleInstance:会启动一个新的活动返回栈
举例:在返回栈1中的A 启动返回栈2中的B,此时B中启动返回栈中的C,此时如果C按返回键,返回的直接是A,再次按返回键,是B,再按返回键才是退出
A》B》C C》A》B