`
yxwang0615
  • 浏览: 559728 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

[转]跟 Task 有关的 Intent对象中设置的Flag

 
阅读更多

FLAG_ACTIVITY_BROUGHT_TO_FRONT 
    这个标志一般不是由程序代码设置的,如在launchMode中设置singleTask模式时系统帮你设定。

FLAG_ACTIVITY_CLEAR_TOP 
    如果设置,并且这个Activity已经在当前的Task中运行,因此,不再是重新启动一个这个Activity的实例,而是在这个Activity上方的所有Activity都将关闭,然后这个Intent会作为一个新的Intent投递到老的Activity(现在位于顶端)中。 
    例如,假设一个Task中包含这些Activity:A,B,C,D。如果D调用了startActivity(),并且包含一个指向Activity B的Intent,那么,C和D都将结束,然后B接收到这个Intent,因此,目前stack的状况是:A,B。 
    上例中正在运行的Activity B既可以在onNewIntent()中接收到这个新的Intent,也可以把自己关闭然后重新启动来接收这个Intent。如果它的启动模式声明为“multiple”(默认值),并且你没有在这个Intent中设置FLAG_ACTIVITY_SINGLE_TOP标志,那么它将关闭然后重新创建;对于其它的启动模式,或者在这个Intent中设置FLAG_ACTIVITY_SINGLE_TOP标志,都将把这个Intent投递到当前这个实例的onNewIntent()中。 
    这个启动模式还可以与FLAG_ACTIVITY_NEW_TASK结合起来使用:用于启动一个Task中的根Activity,它会把那个Task中任何运行的实例带入前台,然后清除它直到根Activity。这非常有用,例如,当从Notification Manager处启动一个Activity。

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 
    如果设置,这将在Task的Activity stack中设置一个还原点,当Task恢复时,需要清理Activity。也就是说,下一次Task带着FLAG_ACTIVITY_RESET_TASK_IF_NEEDED标记进入前台时(典型的操作是用户在主画面重启它),这个Activity和它之上的都将关闭,以至于用户不能再返回到它们,但是可以回到之前的Activity。 
    这在你的程序有分割点的时候很有用。例如,一个e-mail应用程序可能有一个操作是查看一个附件,需要启动图片浏览Activity来显示。这个Activity应该作为e-mail应用程序Task的一部分,因为这是用户在这个Task中触发的操作。然而,当用户离开这个Task,然后从主画面选择e-mail app,我们可能希望回到查看的会话中,但不是查看图片附件,因为这让人困惑。通过在启动图片浏览时设定这个标志,浏览及其它启动的Activity在下次用户返回到mail程序时都将全部清除。

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 
    如果设置,新的Activity不会在最近启动的Activity的列表中保存。

FLAG_ACTIVITY_FORWARD_RESULT 
    如果设置,并且这个Intent用于从一个存在的Activity启动一个新的Activity,那么,这个作为答复目标的Activity将会传到这个新的Activity中。这种方式下,新的Activity可以调用setResult(int),并且这个结果值将发送给那个作为答复目标的Activity。

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 
    这个标志一般不由应用程序代码设置,如果这个Activity是从历史记录里启动的(常按HOME键),那么,系统会帮你设定。

FLAG_ACTIVITY_MULTIPLE_TASK 
    不要使用这个标志,除非你自己实现了应用程序启动器。与FLAG_ACTIVITY_NEW_TASK结合起来使用,可以禁用把已存的Task送入前台的行为。当设置时,新的Task总是会启动来处理Intent,而不管这是是否已经有一个Task可以处理相同的事情。 
    由于默认的系统不包含图形Task管理功能,因此,你不应该使用这个标志,除非你提供给用户一种方式可以返回到已经启动的Task。 
    如果FLAG_ACTIVITY_NEW_TASK标志没有设置,这个标志被忽略。

FLAG_ACTIVITY_NEW_TASK 
    如果设置,这个Activity会成为历史stack中一个新Task的开始。一个Task(从启动它的Activity到下一个Task中的Activity)定义了用户可以迁移的Activity原子组。Task可以移动到前台和后台;在某个特定Task中的所有Activity总是保持相同的次序。 
    这个标志一般用于呈现“启动”类型的行为:它们提供用户一系列可以单独完成的事情,与启动它们的Activity完全无关。 
    使用这个标志,如果正在启动的Activity的Task已经在运行的话,那么,新的Activity将不会启动;代替的,当前Task会简单的移入前台。参考FLAG_ACTIVITY_MULTIPLE_TASK标志,可以禁用这一行为。 
    这个标志不能用于调用方对已经启动的Activity请求结果。

FLAG_ACTIVITY_NO_ANIMATION 
    如果在Intent中设置,并传递给Context.startActivity()的话,这个标志将阻止系统进入下一个Activity时应用Acitivity迁移动画。这并不意味着动画将永不运行——如果另一个Activity在启动显示之前,没有指定这个标志,那么,动画将被应用。这个标志可以很好的用于执行一连串的操作,而动画被看作是更高一级的事件的驱动。

FLAG_ACTIVITY_NO_HISTORY 
    如果设置,新的Activity将不再历史stack中保留。用户一离开它,这个Activity就关闭了。这也可以通过设置noHistory特性。

FLAG_ACTIVITY_NO_USER_ACTION 
    如果设置,作为新启动的Activity进入前台时,这个标志将在Activity暂停之前阻止从最前方的Activity回调的onUserLeaveHint()。 
    典型的,一个Activity可以依赖这个回调指明显式的用户动作引起的Activity移出后台。这个回调在Activity的生命周期中标记一个合适的点,并关闭一些Notification。 
    如果一个Activity通过非用户驱动的事件,如来电或闹钟,启动的,这个标志也应该传递给Context.startActivity,保证暂停的Activity不认为用户已经知晓其Notification。

FLAG_ACTIVITY_PREVIOUS_IS_TOP 
    If set and this intent is being used to launch a new activity from an existing one, the current activity will not be counted as the top activity for deciding whether the new intent should be delivered to the top instead of starting a new one. The previous activity will be used as the top, with the assumption being that the current activity will finish itself immediately.

FLAG_ACTIVITY_REORDER_TO_FRONT 
    如果在Intent中设置,并传递给Context.startActivity(),这个标志将引发已经运行的Activity移动到历史stack的顶端。 
    例如,假设一个Task由四个Activity组成:A,B,C,D。如果D调用startActivity()来启动Activity B,那么,B会移动到历史stack的顶端,现在的次序变成A,C,D,B。如果FLAG_ACTIVITY_CLEAR_TOP标志也设置的话,那么这个标志将被忽略。

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

If set, and this activity is either being started in a new task or bringing to the top an existing task, then it will be launched as the front door of the task. This will result in the application of any affinities needed to have that task in the proper state (either moving activities to or from it), or simply resetting that task to its initial state if needed.

FLAG_ACTIVITY_SINGLE_TOP 
    如果设置,当这个Activity位于历史stack的顶端运行时,不再启动一个新的。

分享到:
评论

相关推荐

    android Intent.FLAG大全

    Intent对象不仅可以携带数据,还能通过设置不同的Flag来改变其行为。本篇文章将详细探讨`Intent.FLAG`的全集,帮助开发者深入理解这些标志如何影响Intent的执行流程。 1. **FLAG_ACTIVITY_NEW_TASK** 这个标志用于...

    Activity启动模式及Intent的Flag属性对Intent传值的影响

    在Android应用开发中,`Activity`是用户界面的主要载体,而`Intent`则是连接各个组件(如Activity、Service等)的桥梁,用于传递数据和控制流程。本篇将深入探讨`Activity`的启动模式和`Intent`的`Flag`属性对`...

    Android中Intent Demo

    7. 使用FLAG:在创建Intent时,还可以设置不同的Flag,如`FLAG_ACTIVITY_NEW_TASK`用于开启新的任务栈,`FLAG_ACTIVITY_CLEAR_TOP`用于清除栈顶所有Activity直到目标Activity,或者`FLAG_ACTIVITY_SINGLE_TOP`使目标...

    android各种文件的intent

    - 创建Intent并设置其动作为`VIEW`,同时添加默认分类(category)和标志(flag)`FLAG_ACTIVITY_NEW_TASK`,这样当Intent被触发时,将会在一个新的任务栈中启动一个新的Activity。 - 创建URI对象,这里使用的是`Uri...

    Android的Intent实验

    - `setFlags()`: 设置Intent的标志,影响Intent的处理方式,如FLAG_ACTIVITY_NEW_TASK用于在新的任务栈中启动Activity。 5. **启动Activity** 使用`startActivity(Intent)`方法启动一个Activity。如果Intent是...

    Intent系统调用示例

    - 可能还涉及到Intent Flag的使用,如`FLAG_ACTIVITY_NEW_TASK`、`FLAG_ACTIVITY_CLEAR_TOP`等,控制Activity的启动行为。 5. **IntentFilter** 对于隐式Intent,接收者需要通过IntentFilter声明可以响应哪些...

    Intent的Activity转向

    Intent是一个意图对象,用来表示应用程序中的一种操作,例如打开一个网页、发送短信或启动一个新的Activity。Intent有两种类型:显式Intent和隐式Intent。 2. 显式Intent: 显式Intent明确指定了要启动的目标...

    android中intent使用示例

    Intent的FLAG常量可以控制启动行为,比如`FLAG_ACTIVITY_NEW_TASK`用于在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`则会清除栈顶到目标Activity之间的所有Activity。 5. 开始Activity: 使用`...

    android Intent的用法

    在Android开发中,Intent是一种非常重要的组件间通信机制。它被用来启动活动(Activity)、服务(Service)或者广播接收器(Broadcast Receiver),并且可以传递数据和执行动作。本篇文章将详细解析Intent的用法。 ...

    Intent跳转的三种写法

    在Android应用开发中,Intent是连接各个组件(如Activity、Service、BroadcastReceiver)的重要桥梁,主要用于启动或激活其他组件。本篇文章将详细讲解Intent跳转的三种常见写法,帮助开发者更好地理解和运用这一...

    Android应用源码之Intent1_Intent.zip

    Intent的Flag可以改变启动行为,例如`FLAG_ACTIVITY_NEW_TASK`用于在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`则会在目标Activity所在的任务栈顶重新打开该Activity,清除其上的所有Activity。...

    Android应用源码之Intent.zip

    - 创建Intent对象,设置属性。 - 使用Intent启动目标组件。 - 目标组件接收到Intent,通过`getIntent()`获取Intent。 - 执行相应操作,可能包括处理Data,使用Extras等。 8. **Intent的Flags**: - `FLAG_...

    intent属性

    5. Flags:标志位,用于设置Intent的行为,如FLAG_ACTIVITY_NEW_TASK用于启动新的任务栈,FLAG_ACTIVITY_CLEAR_TOP用于重新启动目标活动并清除其上面的所有活动。 三、Intent的创建与使用 1. 创建Intent:可以通过...

    intent的常用方法

    1. **设置Flag**:在创建Intent时,通常需要为Intent设置`FLAG_ACTIVITY_NEW_TASK`标志位。这表示新启动的Activity将在一个新的任务栈中运行。例如: ```java Intent i = new Intent(context, Receivered.class);...

    intent传递类内容

    - Intent的Flag可以控制启动行为,例如`FLAG_ACTIVITY_NEW_TASK`表示在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`表示如果目标Activity已经在栈顶,则清除其上面的所有Activity。 6. **Intent Filter**...

    android intent跳转

    ### Android Intent跳转详解 在Android开发中,`Intent`是一种非常重要的...综上所述,Intent在Android开发中扮演着极其重要的角色,熟练掌握Intent的相关知识对于提高应用程序的功能性和用户体验有着至关重要的作用。

    Android-1(Intent)

    如果目标Activity属于其他应用,需在Intent构造函数中指定ACTION,并设置FLAG_ACTIVITY_NEW_TASK标志。 2. **Intent传值** Intent不仅可以启动Activity,还能携带数据。我们可以使用`putExtra()`方法将基本数据...

    Intent实例

    比如`FLAG_ACTIVITY_NEW_TASK`用于在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`用于清除栈顶到目标Activity之间的所有Activity。 6. **Broadcast Intent**:除了用于启动Activity和Service,Intent还...

    Android应用源码之Intent_Intent.zip

    Intent的Flags可以控制启动行为,比如`FLAG_ACTIVITY_NEW_TASK`用于在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`用于清理栈顶的Activity并返回到该Activity。 8. **Intent的生命周期** 当一个Intent被...

    intent的深入分析

    5. Flags:Intent的标志,如FLAG_ACTIVITY_NEW_TASK表示在新的任务栈中启动Activity。 三、Intent的使用场景 1. 启动Activity:通过setClass()或setComponent()设置目标Activity,然后用startActivity()或...

Global site tag (gtag.js) - Google Analytics