Android 启动模式和启动标志的关系以及各种适应的使用场合

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 21:57   1505   0
转载请注明出处:http://blog.csdn.net/onlybeyond99/article/details/50688344 挨踢人one
一、设置方式
1、通过在配置文件中设置Activity的launchMode熟悉设置启动模式
2、在StartActivity()之前对Intent设置启动标志
二、启动模式
1、 standard: 标准模式,这也是系统的默认模式。 每次启动一个Activity都会重新创建一个新的实例。
2、 singleTop: 栈顶复用模式。 在这种模式下,如果新Activity已经在任务栈中存在了并且位于任务栈的栈顶,那么新Activity不会被重新创建。
运用场景:后台service不停的加载数据,然后用startactivity更新数据,

3、 singleTask: 栈内复用模式。
两种情况:当Activity设置 TaskAffinity并且与原来不一样时会新开一个栈,将其放入栈地
没有设置时会加入当前的栈,如果之前的栈已经含有启动的Activity,则activity之上的其他Activity都会被移除
适用场景:注册包含多个页面,从比较深的页面之间回到首页导航
启动的Activity变为栈顶
4、 singleInstance: 系统会为他单独创建一个任务栈将其压入,如果再次启动他,他已经存在了,那么就直接复
用该任务栈。 单独占用一个任务栈
适用场景:一些特别消耗资源的Activity,比如包含地图的Activity

三、启动标志
1. FLAG_ACTIVITY_SINGLE_TOP
与launchMode="singleTop"具有相同的行为
2. FLAG_ACTIVITY_NEW_TASK
单独用通常没效果,需要 与FLAG_ACTIVITY_CLEAR_TASK或FLAG_ACTIVITY_CLEAR_TOP联合使用。
FLAG_ACTIVITY_CLEAR_TASK一起使用能够能够清除之前的Activity
FLAG_ACTIVITY_CLEAR_TOP时需要把 TaskAffinity设置的和之前不一样。这时的效果类似于 singleTask不同 TaskAffinity的效果

四、关系与比较
两种都能对Acitity的启动模式进行设置,且有很多模式两种都能实现。( singleInstance只能第一种实现
但个人感觉启动标志会更灵活一些。因为很多的 Activity使用的多次,而且需求不一定一样。这时通过启动标志来控制回方便很多
独学而无友,则孤陋而寡闻!分享知识,交流技术,碰撞思想!
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP