android笔记之启动模式

自从第一次面试起,好像就被面试官问着,这个知识点就像问Activity生命周期一样,而且作用也是不容小觑的。这里做个笔记以供今后查阅:

1:standard

当Activity启动模式不做任何指定时,系统会默认采用此模式,不做使用说明了。

2:singleTop

Manifest 中对应的Activity配置android:launchMode="singleTop"。

B Activity配置了singleTop模式,此时从A跳转B,如果B在栈顶,则不重新创建B(仅仅会调用B的onNewIntent方法),如果B不在栈顶,则会重新创建B,就和standard一样了

3:singleTask

Manifest 中对应的Activity配置android:launchMode="singleTask"。

B Activity配置了singleTast模式,此时从A跳转B,如果B在栈中,则不重新创建B(仅仅会调用B的onNewIntent方法),并且会移除掉B上面的所有Activity;如果是在别的应用程序中启动B,则会新建一个task,并在该task中启动B,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中,例如:若是别的应用程序打开C2,则会新启一个task。
如别的应用Other中有一个activity,taskId为200,从它打开C2,则C2的taskIdI不会为200,例如C2的taskId为201,那么再从C2打开C1、C3,则C2、C3的taskId仍为201。
注意:如果此时你点击home,然后再打开Other,发现这时显示的肯定会是Other应用中的内容,而不会是我们应用中的C1 C2 C3中的其中一个。

4:singleInstance

Manifest 中对应的Activity配置android:launchMode="singleInstance"。

被配置此模式的Activity,会新建一个栈,此栈中只允许有这个Activity。

singleInstance模式也是单例的,但和singleTask不同,singleTask只是任务栈内单例,系统里是可以有多个singleTask Activity实例的,而singleInstance Activity在整个系统里只有一个实例,启动一singleInstanceActivity时,系统会创建一个新的任务栈,并且这个任务栈只有他一个Activity。

SingleInstance模式并不常用,如果我们把一个Activity设置为singleInstance模式,你会发现它启动时会慢一些,切换效果不好,影响用户体验。它往往用于多个应用之间,例如一个电视launcher里的Activity,通过遥控器某个键在任何情况可以启动,这个Activity就可以设置为singleInstance模式,当在某应用中按键启动这个Activity,处理完后按返回键,就会回到之前启动它的应用,不影响用户体验。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值