Activity启动模式

启动模式可以通过AndroidManifest.xml中通过标签指定android:lunchMode属性来选择启动模式

standard

standard是默认的启动模式,在该模式下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶位置。
Activity启动模式_第1张图片
点开程序时 会触发一次onCreate:
Activity启动模式_第2张图片
点击两次BUTTON1 :
Activity启动模式_第3张图片
新建了两个FirstActivity实例

singleTop

当活动的启动模式是singleTop,在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例
Activity启动模式_第4张图片
在AndroidManifest.xml中修改launchMode为 singleTop

开启程序时,会触发onCreate
Activity启动模式_第5张图片
后续点Button1不会有任何反应,也就是没有创建新的实例

修改FirstActivity和SecondActivity的代码:
Activity启动模式_第6张图片
Activity启动模式_第7张图片

FirstActivity点击按钮跳转到SecondActivity SecondActivity点击按钮跳转到FirstActivity
在这里插入图片描述
点开程序 创建First实例,点击Button1 创建Second实例,点击Button2 创建First实例

singleTask

当活动启动模式是singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并且把在这个活动之上的活动统统出站,如果没有发现就会创建一个新的活动实例

FirstActivity:
Activity启动模式_第8张图片

SecondActivity:
Activity启动模式_第9张图片
启动程序,点击Button1 后点击Button2:
Activity启动模式_第10张图片
在SecondActivity启动FirstActivity时,返回栈已经存在一个FirstActivity实例并在Second下面,于是Second出战,而First重新成为栈顶活动

singleInstance

指定为singleInstance的活动会启动一个新的返回栈来管理这个活动

需要共享的活动可以用这种启动方式

FirstActivity:
Activity启动模式_第11张图片
SecondActivity:
Activity启动模式_第12张图片
ThirdActivity:
Activity启动模式_第13张图片
启动软件,分别点击Button1 Button2:
Activity启动模式_第14张图片
可以发现First和Third是同一个栈,Second单独一个

你可能感兴趣的:(Android,android,java,ui)