简介
通过设置ActivityManifestActivity_launchMode可以设置Activity的启动模式。
默认情况下,使用启动模式:standard。
同时,launchMode可以通过Intent flags的改变在运行时被复写,比
如 Intent flags FLAG_ACTIVITY_SINGLE_TOP, FLAG_ACTIVITY_NEW_TASK,
FLAG_ACTIVITY_MULTIPLE_TASK.
模式1:standard。默认模式。
这是默认的启动模式,每次启动,都启动一个new Instance。
模式2:singleTop
可以看出,当task顶部有singleTop的Activity时,就复用;若没有就重新创建。
singleTop:就是栈顶只有一个instance。
适合接受推送消息的展示页
某些本应只展示一个的场景,比如一下子收到一堆推送消息,不能每个都弹出来吧。但凡是这样的都行。优酷的推荐视频,电商app推送一个活动。
模式3:singleTask
为什么会这样呢。因为Activity2是singleTask,如果task里没有就new,若有,就把Activity2之上的全部移除掉。这样,自己就变成了顶。所以说,singleTask是singleTop的扩展。
singleTop:顶上不是target Activity,new一个
singleTask:顶上不是target Activity,移除target之上的,把自己变成top。
singleTask的特性是头上不允许有任何task。也不会有重复的instance。在target Activity之后的任何activity都会被干掉。等于重生啊。
适合程序入口,不需要启动后activity的
是的,只能用在启动页了吧,首页,这种只允许有一个instance,如果有其他就移除掉它顶上的。从这个Activity进入的其他activity都抛弃掉了。用户要再操作一次。
官网的文档说----make sure to test the usability of the activity during launch
确实,得好好考虑下,不是所有activity都可以用的
模式4:singleInstance
这图有点复杂。两个框代表两个task,这应没什么问题。下框没连接部分,都跑到Activity2去了。
可以看到一启动到Activity2就会重新开辟一个task。而这里头的task只有一个activity2.
在返回的时候,是一个task,一个task的返回的。
要从当前的task开始,上图task2结束后就跳转到task1了。
singleInstance的特性是 完全同程序分离。完全独立运行的。
同样的也要想清楚再用。
适合需要与程序分离开的页面。
————————————————
版权声明:本文为优快云博主「手艺人王学明」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/wangxueming/article/details/73294777