启动模式可以通过AndroidManifest.xml中通过标签指定android:lunchMode属性来选择启动模式
standard
standard是默认的启动模式,在该模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶位置。
点开程序时 会触发一次onCreate:
点击两次BUTTON1 :
新建了两个FirstActivity实例
singleTop
当活动的启动模式是singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例
在AndroidManifest.xml中修改launchMode为 singleTop
开启程序时,会触发onCreate
后续点Button1不会有任何反应,也就是没有创建新的实例
修改FirstActivity和SecondActivity的代码:
FirstActivity点击按钮跳转到SecondActivity SecondActivity点击按钮跳转到FirstActivity
点开程序 创建First实例,点击Button1 创建Second实例,点击Button2 创建First实例
singleTask
当活动启动模式是singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并且把在这个活动之上的活动统统出站,如果没有发现就会创建一个新的活动实例
FirstActivity:
SecondActivity:
启动程序,点击Button1 后点击Button2:
在SecondActivity启动FirstActivity时,返回栈已经存在一个FirstActivity实例并在Second下面,于是Second出战,而First重新成为栈顶活动
singleInstance
指定为singleInstance的活动会启动一个新的返回栈来管理这个活动
需要共享的活动可以用这种启动方式
FirstActivity:
SecondActivity:
ThirdActivity:
启动软件,分别点击Button1 Button2:
可以发现First和Third是同一个栈,Second单独一个