Activity 启动模式及任务栈探究

Activity 启动模式及任务栈探究在Android中,默认情况下,当我们启动一个Activity的时候,系统会创建一个Activity实例然后将它放入任务栈(任务栈是一个 “后进先出” 的栈结构)中,当我们按 back 键返回时,这些Activity就会一一回退。但是当我们重复启动一个Activity多次时,就会创建多个该Activity的实例,同样返回时要多次返回一个一个退出才行,在很多情...
摘要由CSDN通过智能技术生成

Activity 启动模式及任务栈探究

在Android中,默认情况下,当我们启动一个Activity的时候,系统会创建一个Activity实例然后将它放入任务栈(任务栈是一个 “后进先出” 的栈结构)中,当我们按 back 键返回时,这些Activity就会一一回退。但是当我们重复启动一个Activity多次时,就会创建多个该Activity的实例,同样返回时要多次返回一个一个退出才行,在很多情况下,这种模式是很不友好的,所以Android就提供了启动模式来修改系统默认的行为。

定义 Activity 的启动模式

可以通过两种方式定义不同的启动模式:

  • 使用清单文件

    在清单文件中声明 Activity 时,修改 launchMode 属性值来达到修改启动模式的作用。该方式下有四种值可取:standard、singleTop、singleTask、singleInstance

  • 使用 Intent 标志

    调用 startActivity() 时,可以在 Intent 中加入一个标志(flag),来达到修改启动模式的作用。该方式下Intent有比较多的 Intent.FLAG_XXX 可取,如:Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_ACTIVITY_CLEAR_TOP 等具体的可以查看源码。

注1:某些适用于清单文件的启动模式不可用作 Intent 标志,同样,某些可用作 Intent 标志的启动模式无法在清单文件中定义(如:清单文件形式无法直接为 Activity 设置为 Intent.FLAG_ACTIVITY_CLEAR_TOP标识,而Intent标识无法指定Activity为 singleInstance 模式)。

注2:如果同时给一个Activity使用了上述两种方法指定启动模式,那么使用 Intent 标识的优先级更高。</

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值