Activity的启动模式与标志位

启动模式

共有4个值:

  • standard
    默认模式
  • singleTop
    如果Activity已经在栈顶时,就不会被重新创建,同时它的onNewIntent方法会被回调,通过此方法的参数可以取出当前请求的信息。
  • singleTask
    如果Activity已经这个栈中,就不会被重新创建,同时它的onNewIntent方法也会被回调。
    可以指定任务栈,在AndroidMenifest.xml文件中用属性TaskAffinity指定,标识一个Activity所需要的任务栈的名字,默认情况下,所有Activity所需任务栈的名字为应用的包名。
    关于TaskAffinity,它主要和singleTask(指定任务栈名字)或allowTaskReparenting(应用A启动了应用B的某个Activity后,如果这个Activity的allowTaskReparenting属性为true,那么当应用B被启动后,这个Activity会直接从应用A的任务栈转移到应用B的任务栈)属性配对使用,其他情况下无意义。
  • singleInstance
    此模式下的Activity只能单独地位于一个任务栈中,可以认为是一种加强的singleTask模式。

(1)在AndroidMenifest.xml文件对应的Activity标签中指定,示例:

android:launchMode="singleTask"

(2)通过Intent设置标志位,示例:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

第2种指定方式的优先级高,同时存在时,以第2种为准。

标志位

Activity的Flags有很多,常用的标记位有:

- FLAG_ACTIVTTY_NEW_TASK
等同于singleTask
- FLAG_ACTIVTTY_SINGLE_TOP
等同于singleTop
- FLAG_ACTIVTTY_CLEAR_TOP

- FLAG_ACTIVTTY_EXCLUDE_FROM_RECENTS
不会出现在Activity的历史列表里

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值