使用Intent的Flag设置启动参数

Intent中关于激活Activity的Flag

Intent类定义了一批常量,用于配置激活Activity时的相关参数;
在Intent中设置Flag
·调用Intent的setFlags()或addFlags()可配置Intent的Flag属性
属性值介绍:
  FLAG_ACTIVITY_NEW_TASK
·尝试开启新的Task,可能产生的效果:
  (1)如果当前已有Task与尝试激活的Activity的taskAffinity相同,则在该Task中直接压栈,
被激活的Activity获得栈顶位置;
  (2)如果当前没有Task与尝试激活的Activity的taskAffinity相同,则创建新的Task
且被激活的Activity获得栈顶位置。
例如:
·App1中存在ActivityA与ActivityB,当前ActivityA已经激活,通过APP2
激活App1的ActivityB,回到桌面并点击App1的图标,会直接显示ActivityB,在整个过程中,App1
的2个Activity的Task ID相同,App2的Activity是另一个Task ID。

 FLAG_ACTIVITY_CLEAR_TASK
·清空被激活的Activity应该归属的Task,且被激活的Activity添加到该Task中获得栈顶位置
·该Flag应该与FLAG_ACTIVITY_NEW_TAST一起使用


 FLAG_ACTIVITY_SINGLE_TOP
    ·位于栈顶是唯一,其特性可参考将<activity>中launchMode属性配置为singleTop
但是区别在于:Flag设置比较活,可以动态的设置,而launchMode设置比较死

FLAG_ACITVITY_CLEAR_TOP

·清除顶部,可能产生的效果:
  ·情景1:当Intent尝试激活Activity的实例在Task中不存在时,创建该Activity的实例,并
获得栈顶位置;
   情景2:如果该Activity的实例已经存在,则清除Task中该实例之上的所有Activity,且
获得栈顶位置;
   情景3:在情景2的基础上,如果该Activity的launchMode属性不是

singleTask或singleInstance时,该Activity原本存在的实例也会被移除,位于栈顶的是新创建的该Activity的实例


FLAG_ACTIVITY_CLEAR_WHEA_TASK_RESET

·当Task被Reset时,清除该Activity及在Task中位于该Activity之上的所有Activity
·当Task被置于后台,且重新被置于前台时,则可能被Reset(由系统添加FLAG_ACTIVITY_RESET_TASK_IF_NEEDED),
通常通过点击应用程序图标回到前台时会Reset,而通过任务列表则不会。

FLAG_ACTIVITY_NO_HISTORY

。当Activity被置于后台之后,是否将其从Back Stack中清除并结束,其特性可参考<activity>的noHistory属性



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值