zoukankan      html  css  js  c++  java
  • Activity Launch Mode

    launcherMode

        Activity如何被启动呢?Intent对象中与Activity启动相关的标志(FLAG_ACTIVITY_*)有四个。它们分别是:

        "standard"     "singleTop"     "singleTask"     "singleInstance"

    默认的启动模式是“standard”

    四个模式主要分成两组:第一组是 "standard" 和"singleTop" ,"singleTask" 和"singleInstance"是另外一组。Activity以 "standard" 和"singleTop" 这两种模式启动时,可以被实例化多次。其实例可以属于任何Task中,并且可以位于Task的任意位置。通常情况下,它们通过调用startActivity()启动加入到Task中,除非Intent对象中包含了“FLAG_ACTIVITY_NEW_TASK ”的flag,在这种情况下它将进入到不同的Task中。

    相比之下, "singleTask" 和"singleInstance"模式启动的Activity只能开始另一个Task,并且它们总是属于这个Task的Root Activity。此外,设备在一段时间内只维持一个该Activity的实例。只有一个这样的Task。

     "standard" 和"singleTop"之间只有一个地方不同:对于"standard"模式的Activity,每次有一个Intent启动时,都会生成新的Activity实例,而对于"singleTop"模式启动的Activity来说,如果Activity实例在目标Task的顶部,该Activity被Intent启动时不会产生新的实例(会调用oneNewIntent()),其它情况下,如果Activity在目标Task中但是不在目标Task的顶部 或是 Activity在一个Task的顶部,但是不在目标Task中。它仍会创建一个新实例,进入到目标Task的顶部。

     "singleTask" 和"singleInstance"之间也是只有一个地方不同:以 "singleTask"模式开始的Activity,允许其它的Activity加入到它所到的Task,它始终是这个Task的Root Activity,其它能进入到这个Task的Activity的启动模式一定是 "singleTask" 和"singleInstance"这两种模式。"singleInstance"启动的Activity也会开始一个Task,但是它不允话其它的Activity进入到它所在的Task,它是此Task的唯一的Activity同样也是Root Activity。

    1.standard

        默认启动方式。系统总是在目标Task中创建一个新的Activity实例。

    2.singleTop

        如果在目标Task的顶部已存在Activity实例,系统将通过该实例调用onNewIntent()方法,而不创建新的Activity实例。

    3.singleTask

        系统创建新的Activity实例,开启新的Task,并将Activity的实例做为新Task的根Activity。但是如果Activity的实例已经存在,系统会通过该实例调用onNewIntent()方法,而不是创建一个新的实例。

    4.singleInstance

        同“singleTask”一样,但是系统不会将其它Activity的实例放入到拥有该Activity实例的Task,该Activity实例将独占一个Task

  • 相关阅读:
    大型门户网站架构设计的可伸缩性(转载)
    geodatabase的类型(翻译)
    在Windows Server 2008上部署SVN代码管理总结
    可以有效改进项目管理技能的十个过程(转载)
    GTD和知识管理
    查询Oracle版本号
    微软产品组里的十一类人(转载)
    在Win7中创建、部署WebService时遇到的访问被拒绝错误解决方法
    小议地理编码(转载)
    在Win7中将我的电脑快捷方式放入任务栏
  • 原文地址:https://www.cnblogs.com/pillowzhou/p/4903722.html
Copyright © 2011-2022 走看看