`
lydia.ylh
  • 浏览: 4990 次
  • 性别: Icon_minigender_2
  • 来自: 大连
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

android:launchMode — “standard” “singleTop” “singleTask”

阅读更多
android:launchMode — “standard” “singleTop” “singleTask” “singleInstance”
Mr小天天 / 24/02/2011 / No comments

版本一

    * standard 和 single top类似:这两种载入模式的activity可以,实例可以属于任何task,能够在activity栈中的任何位置通常,通过调用 startActivity() 将它们载入到task里(除非Intent对象包含FLAG_ACTIVITY_NEW_TASK 指令,这种情况下会选择一个不同的task。
    * singleTask和singleInstance activity只能开始一个task。它们总是位于activity stack的根部。并且,设备在同一时刻只能有一个该activity的实例存在 — 只有一个这样的task。
    * “singleTask”和”singleInstance”模式区别:一个”singleTask” activity允许其他的activity作为它的task里的一部分。”singleInstance”反之。

版本二

    * 哪个任务存放着activity,用来对行为进行响应。对“standard”和“singleTop”模式来说,这个任务是产生行为(并且调用 startActivity())的那个——除非行为对象包含了 FLAG_ACTIVITY_NEW_TASK标记。在这种情况下,像前面那节Affinities and new tasks 描述的一样,将会选择一个不同的任务。
    * 它们是否可以有多个实例。”standard”和“singleTop”类型的activity可以被实例化多次。它们可以属于多个任务,一个特定的任务也可以拥有同一个activity的多个实例。
    * 作为比较”singleTask”和”singleInstance”类型的activity只限定有一个实例。因为这些activity是任务的根。这个限制意味着,在设备上不能同时有超过一个任务的实例。
    * 是否能有其他的activity在它所在的任务中。”singleInstance”类型的activity是它所在任务中唯一的 activity。如果它启动了其他的activity,不管那个activity的启动模式如何,它都会加载到一个不同的任务中——好像行为对象中的 FLAG_ACTIVITY_NEW_TASK标记。在其他的方面,”singleInstance”和”singleTask”模式是相同的。
    * 其他三种模式运行任务中有多个activity。”singleTask”总是任务中的根activity,但是它可以启动其他的activity并分配到它所在的任务中。”standard”和”singleTop”类型的activity可以出现在任务中的任何地方。
    * 是否启动一个新的实例来处理一个新的行为。对默认的”standard”模式来说,对于每一个行为都会创建一个新的实例来响应。每个实例只处理一个行为。对于”singleTop”模式,如果一个已经存在的实例位于目标任务activity栈的栈顶,那么他将被重用来处理这个行为。如果它不在栈顶,它将不会被重用,而是为行为创建一个新的实例,并压入栈中。
    * 例如,假设,一个任务的activity栈由根activity A和 B,C,D从上到下按这样的顺序组成,所以这个栈就是A-B-C-D。一个行为指向类型为D的activity。如果D是默认的”standard”加载模式,一个新的实例会被启动,栈现在就是这样A-B-C-D-D。但是,如果D的加载模式是”singleTop”,已经存在的实例会用来处理这个行为 (因为它在栈的顶端)并且栈中还应该是A-B-C-D。
    * 在前面提到,”singleTask”和”singleInstance”类型的activity最多只有一个实例,所以他们的实例应该会处理每个新的行为。”singleInstance”类型的activity总是在栈的顶端(因为他是任务中唯一的一个activity),所以总是能够适当的处理行为。然而,”singleTask”类型的activity也许会有其他的activity在它的上面。如果是这样的话,那就不能处理这个行为,这个行为被丢弃。(即使这个行为被丢弃了,它的到来也会导致那些应该保留不变任务显示到前台来)。
    * 当一个activity被要求处理一个新的行为时,行为对象会通过调用activity的 onNewIntent() 方法传递进来(最初启动activity的行为可以通过调用getIntent()方法获得)。
    * 注意,当创建一个新的activity实例来处理一个新的行为时,用户总是能够通过按下BACK按键退回到前面的状态(前一个activity)。但是当一个已经存在的activity实例处理一个新的行为时,用户不能通过按下BACK按键退回到前面的状态。
分享到:
评论

相关推荐

    LaunchMode的使用

    Activity是Android最常用的组件之一,也是最直观的组件,Activity启动时有四种模式,分别是: “standard” "singleTop" "singleTask" "singleInstance" 其中"standard"是默认模式。

    四种launchMode例程

    Android笔记之四种launchMode例程,Activity有四种加载模式: standard singleTop singleTask singleInstance

    Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)

    当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会... 启动模式有4种,分别为standard、singleTop、singleTask、singleInstance; 讲解启动模式之前,有必要先讲解一下“任务栈”

    Android编程中Activity的四种启动模式

    本文实例讲述了Android编程中Activity的四种启动模式。...设置Activity的启动模式,只需要在AndroidManifest.xml里对应的标签设置android:launchMode属性,例如: <activity android:name=.A1 android:launch

    Android+《火影忍者》活动启动模式以及应用场景的那些事

    android:launchMode=singleTop 将启动模式定义为singleTop模式 然后这时候鸣人就可以搓丸子了 在这种状态下,丸子处于栈顶,当我们继续搓来保持这个丸子的时候,就是我们在创建一个同样的活动来让丸子仍然处于栈顶...

    Android中activity的启动模式

    activity的启动模式一共有四种:standard、singleTop、singleTask和singleInstance,可以在AndroidMannifest.xml中通过给标签指定android:launchMode属性来选择启动模式。 1.standard 是活动默认的启动模式,Android...

    Activity代理框架AyoActivityNoManifest.zip

     android:launchMode="standard"  android:theme="@style/AyoTransparentTheme" />    android:name="org.ayo.app.base.TmplActivitySingleTask"  android:configChanges="orientation|screenSize|...

    android 四种活动启动模式的区别:1.standard、2.singleTop、3.singleTask、4.singleInstance

    一般的,活动会放在一个返回栈中。 在AndroidManifest.xml的活动中注册android:launchMode=” 四种启动模式 “ ...3、singleTask:会检测新创建的活动在栈中有没有出现,出现则将此活动上面的活动Destroy掉,使这个活

    Android Activity启动模式全面解析

    启动模式主要包括: standard, singleTop, singleTask, singleInstance. 标准模式在每次启动时, 都会创建实例; 三种单例模式, 会根据情况选择创建还是复用实例. 在Activity启动中, 创建实例的生命周期: onCr

    android中的Activity启动方式

    <activity android:name=".MainActivity"android:launchMode="standard" /> Activity的四种启动模式: 1.standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2.singleTop 如果在...

    Android安卓 Activity四种启动模式(launchMode) standard, singleTop, singleTask, singleInstance

    Android编程中经常涉及到页面的切换,启动一个新的页面(或者说Activity)的时候需要为其指定合适的“启动模式”。指定的启动模式不合适,会出现类似下面这种奇怪的效果: 你拿起QQ切换了一个新的账号,一直按返回却...

    android基础总结篇之二:Activity的四种launchMode

    我们今天要讲的是Activity的四种launchMode。 launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,...1.standard 2.singleTop 3.singleTask 4.singleInstance 我们可

    Intent3.rar

    1、standard模式—默认启动模式(采用先进后出的模式) 2、singleTop模式,在启动活动时如果发现返回栈的栈顶已经是该活动,则直接 使用,不再启动。(在manifest里面修改launchMode属性)有一个缺陷是:如果 该活动不...

Global site tag (gtag.js) - Google Analytics