zoukankan      html  css  js  c++  java
  • 使用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属性



  • 相关阅读:
    URL中 # (hash)的含义
    哈弗曼树的理解和实现(Java)
    树、森林和二叉树的转换
    后序线索化二叉树(Java版)
    线索二叉树的理解和实现(Java)
    彻底理解线索二叉树
    链式二叉树的实现(Java)
    数和二叉树的基本概念和类型
    数据结构:广义表的实现(Java)
    正则表达式要转义的字符集
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7019066.html
Copyright © 2011-2022 走看看