android Intent启动flag含义

android Intent启动flag含义

FLAG_GRANT_READ_URI_PERMISSION
如果设置这个标记,Intent的接受者将会被赋予读取Intent中URI数据的权限和lipData中的URIs的权限。当应用与Intent的ClipData时,所有的URIs和data的所有递归遍历或者其他Intent的ClipData数据都会被授权。

FLAG_GRANT_WRITE_URI_PERMISSION

同FLAG_GRANT_READ_URI_PERMISSION只是相应的赋予的是写权限

FLAG_FROM_BACKGROUND
由调用者设置,表示这个Intent来自一个后台操作,而不是用户交互

FLAG_DEBUG_LOG_RESOLUTION
用来调试,当设置这个标志的时候,在解析这个intent的时候,将会打出打印信息(queryIntent函数)

FLAG_EXCLUDE_STOPPED_PACKAGES
如果设置,这个intent将不会去匹配这个package中当前停止的组件。也就是当我们查找到一堆合适的Intent时候,如果某个已经停止,则将会将其从合适的Intent中删除

FLAG_INCLUDE_STOPPED_PACKAGES
如果设置,这个intent将也匹配这个package中当前停止的组件。也就是当我们查找到一堆合适的Intent时候,如果某个已经停止,也不会将其从合适的Intent中删除

FLAG_ACTIVITY_NO_HISTORY
不把它保存到history堆栈,一旦用户离开了这个activity,这个activity将会结束,这个属性可以通过在AndroidManifest的activity标签中使用noHistory设置

FLAG_ACTIVITY_SINGLE_TOP
如果当前栈顶的activity就是要启动的activity,则这个activity将不会再加载

FLAG_ACTIVITY_NEW_TASK
设置这个标志,要启动的activity将会在一个新的task中启动。一个task定义了一个用户可以移动的activity的原子组。task可以移动到前台或者后台.一个task中的所有activity经常保持同样的次序。
当使用这个标记的时候,如果已经有一个task在运行你要启动的activity,这是将不会启动新的activity,而是把这个拥有你要启动activity的task切换到前台,保持它最后操作是的状态。查看FLAG_ACTIVITY_MULTIPLE_TASK来关闭这个行为。
当调用者组要从启动的activity返回一个结果时不能使用这个标志

FLAG_ACTIVITY_MULTIPLE_TASK
不建议使用此标记,除非你自己实现了应用程序的启动器。结合FLAG_ACTIVITY_NEW_TASK这个标记,即使要启动的activity已经存在一个task在运行,也会新启动一个task来运行要启动的activity
系统缺省是不带任务管理器的,所以当你使用这个标签的时候,你必须确保你能从你启动的task中返回回来。
如果没有设置FLAG_ACTIVITY_NEW_TASK,这个标记被忽略

FLAG_ACTIVITY_CLEAR_TOP

FLAG_ACTIVITY_FORWARD_RESULT
一个Intene如果设置了这个标记,并且用于从一个已经存在的activity中启动一个activity,那么已经存在的这个activity的reply将会传给新启动的activity.例如假设有A、B、C三个activity A启动B,假如A的结果是给C的,当A启动B的时候设置了这个标志时,C调用setResult设置的结果也是返回给A,而不是B

FLAG_ACTIVITY_PREVIOUS_IS_TOP

这个标志好像没什么用,用于在获取栈顶ActivityRecord的时候,如果其等于该ActivityRecord,则继续获取下一个

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
新启动的actiivty不添加到最近应用列表,也即我们从最近应用里面查看不到我们启动的这个activity

FLAG_ACTIVITY_BROUGHT_TO_FRONT
这个标记一般不是由应用程序自己设置的,而是由系统为你设置。 这个标记只看到在ActivityStack.java中的startActivityUncheckedLocked设置了这个标记,但是没看到其他地方使用它来做具体的用途判断等。

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
同FLAG_ACTIVITY_BROUGHT_TO_FRONT,这个标记由系统设置,也没看到具体使用到这个标记的地方

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

FLAG_ACTIVITY_NO_USER_ACTION
在启动一个activity时,会从一个activity切换到另一个activity,如果设置了这个标记,在前一个activity 暂停的时候不会调用它的onUserLeaveHint函数
一般而言,activity可以通过依赖这个回调来明确的知道他们的activity已经从前台移除。这个回调给了activity在其生命周期中一个合适的时机来不让它错过它想显示的一些东西,如闪烁一下LED
如果一个activity不是由一个用户驱动启动的,如电话来了,或者闹钟的处理activity,必须使用这个标记,确保暂停的activity不认为用户已经知道这个通知

FLAG_ACTIVITY_REORDER_TO_FRONT
如果设置这个标记,新启动的activity将会被放到它所属task的最前面
例如,假如有一个task包含4个activity:A,B,C,D.如果D通过调用startActivity()来启动B,如果使用了这个标记,B将会排在这个task的最上面,也即现在的顺序变成了A,C,D,B.
如果使用了FLAG_ACTIVITY_CLEAR_TOP,这个标记将会被忽略

FLAG_ACTIVITY_NO_ANIMATION
如果设置这个标志,activity切换时将不使用动画迁移,但这并不表示以后将不会再显示动画迁移,如果其他的activity切换且没有设置这个标志时,还是会显示动画迁移的。当我们有一系列的activity要切换,且我们在某些activity切换时不想显示动画迁移时,这个标志就有用了。

FLAG_ACTIVITY_CLEAR_TASK

FLAG_ACTIVITY_TASK_ON_HOME

FLAG_RECEIVER_REGISTERED_ONLY
如果发送一个广播的intent设置了这个标记,则只有注册了的接受者被调用,所有的BroadcastReceiver组件都不会被加载。

FLAG_RECEIVER_REPLACE_PENDING
当发送一个广播的时候如果设置这个标记,新的广播将会替换掉和他匹配的暂停的广播。
由于粘性广播只关注于把最新的值发给他们的接收者,所以粘性广播一般使用这个标记

FLAG_RECEIVER_FOREGROUND
当发送广播时,允许其接受者 在前台运行的拥有更高的优先级,更短的超时间隔。

FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT
在boot完成前发送广播,只有注册了的接收者才会被调用

FLAG_RECEIVER_BOOT_UPGRADE
如果这条广播是用于系统升级的,设置这个标志,一种特许的状态允许系统在启动完成前发送广播。
后面会分析其中的几个Flag.

FLAG_ACTIVITY_CLEAR_TOP

FLAG_ACTIVITY_FORWARD_RESULT
一个Intene如果设置了这个标记,并且用于从一个已经存在的activity中启动一个activity,那么已经存在的这个activity的reply将会传给新启动的activity.例如假设有A、B、C三个activity A启动B,假如A的结果是给C的,当A启动B的时候设置了这个标志时,C调用setResult设置的结果也是返回给A,而不是B

FLAG_ACTIVITY_PREVIOUS_IS_TOP

这个标志好像没什么用,用于在获取栈顶ActivityRecord的时候,如果其等于该ActivityRecord,则继续获取下一个

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
新启动的actiivty不添加到最近应用列表,也即我们从最近应用里面查看不到我们启动的这个activity

FLAG_ACTIVITY_BROUGHT_TO_FRONT
这个标记一般不是由应用程序自己设置的,而是由系统为你设置。 这个标记只看到在ActivityStack.java中的startActivityUncheckedLocked设置了这个标记,但是没看到其他地方使用它来做具体的用途判断等。

FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
同FLAG_ACTIVITY_BROUGHT_TO_FRONT,这个标记由系统设置,也没看到具体使用到这个标记的地方

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET

FLAG_ACTIVITY_NO_USER_ACTION
在启动一个activity时,会从一个activity切换到另一个activity,如果设置了这个标记,在前一个activity 暂停的时候不会调用它的onUserLeaveHint函数
一般而言,activity可以通过依赖这个回调来明确的知道他们的activity已经从前台移除。这个回调给了activity在其生命周期中一个合适的时机来不让它错过它想显示的一些东西,如闪烁一下LED
如果一个activity不是由一个用户驱动启动的,如电话来了,或者闹钟的处理activity,必须使用这个标记,确保暂停的activity不认为用户已经知道这个通知

FLAG_ACTIVITY_REORDER_TO_FRONT
如果设置这个标记,新启动的activity将会被放到它所属task的最前面
例如,假如有一个task包含4个activity:A,B,C,D.如果D通过调用startActivity()来启动B,如果使用了这个标记,B将会排在这个task的最上面,也即现在的顺序变成了A,C,D,B.
如果使用了FLAG_ACTIVITY_CLEAR_TOP,这个标记将会被忽略

FLAG_ACTIVITY_NO_ANIMATION
如果设置这个标志,activity切换时将不使用动画迁移,但这并不表示以后将不会再显示动画迁移,如果其他的activity切换且没有设置这个标志时,还是会显示动画迁移的。当我们有一系列的activity要切换,且我们在某些activity切换时不想显示动画迁移时,这个标志就有用了。

FLAG_ACTIVITY_CLEAR_TASK

FLAG_ACTIVITY_TASK_ON_HOME

FLAG_RECEIVER_REGISTERED_ONLY
如果发送一个广播的intent设置了这个标记,则只有注册了的接受者被调用,所有的BroadcastReceiver组件都不会被加载。

FLAG_RECEIVER_REPLACE_PENDING
当发送一个广播的时候如果设置这个标记,新的广播将会替换掉和他匹配的暂停的广播。
由于粘性广播只关注于把最新的值发给他们的接收者,所以粘性广播一般使用这个标记

FLAG_RECEIVER_FOREGROUND
当发送广播时,允许其接受者 在前台运行的拥有更高的优先级,更短的超时间隔。

FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT
在boot完成前发送广播,只有注册了的接收者才会被调用

FLAG_RECEIVER_BOOT_UPGRADE
如果这条广播是用于系统升级的,设置这个标志,一种特许的状态允许系统在启动完成前发送广播。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Androidintent multi_task flag的具体含义是指当打开一个新的Activity时,如果设置了multi_task flag,则会在后台创建新的task,而不是在当前task中打开新的Activity。 ### 回答2: Android中,Intent的multi_task标志是指一个意图可以同时启动多个任务。当我们在启动一个Activity时,可以设置Intent的flags属性为FLAG_ACTIVITY_MULTIPLE_TASK。这个标志告诉系统,当前的Activity可以在其自己的任务栈中启动。 具体来说,当我们使用multi_task标志时,通过startActivity()方法启动Activity时,系统会根据设置的flag来决定Activity的启动行为。如果该Activity已经存在于一个任务栈中,那么系统会创建一个新的任务栈,并在新的任务栈中启动这个Activity。这样可以同时打开多个相同的Activity,并且它们各自运行在不同的任务栈中。 使用multi_task标志可以实现一些特定的功能需求,比如多窗口分屏、在同一个应用中同时打开多个相同的Activity等。通过在Intent中设置这个标志,我们可以灵活地控制Activity的启动模式,增加用户的使用体验。 需要注意的是,使用multi_task标志时,要特别小心各个Activity之间的共享数据和资源的问题,需要进行适当的处理,以免出现意外情况。同时,使用该标志时,也要考虑到设备的性能和用户的使用习惯,避免过多占用系统资源。 总之,Intent的multi_task标志是指可以同时启动多个任务的意图。在Android开发中,我们可以通过设置这个标志来控制Activity的启动行为,从而满足不同功能需求。 ### 回答3: 在Android中,Intent是一种在组件之间传递信息的机制。Intent有很多的标志位(flag)可用于指定Intent的行为。其中,multi_task flag是一个用于指定启动Activity时的行为的标志位。 multi_task flag代表启动一个新的任务(Task)。在Android中,一个任务是一系列相关联的活动(Activity)的集合。当我们使用Intent启动一个Activity时,系统会创建一个新的任务,并将该Activity添加到该任务中。 具体来说,使用multi_task flag启动一个Activity时,系统会为该Activity创建一个独立的任务,并将该Activity置于任务栈的顶部。该Activity会显示在最近使用过的应用列表中,并且可以通过系统的任务切换(Task Switcher)功能进行切换。 multi_task flag的具体含义是允许Activity在独立的任务中运行。对于需要在不同任务之间切换的场景,例如在多窗口模式下同时运行多个应用程序,或者在某些设备的分屏模式下使用多个应用程序时,使用multi_task flag可以很方便地创建并切换任务。 需要注意的是,使用multi_task flag启动Activity时,可能会受到一些限制。例如,一些权限和启动模式可能会影响Activity是否能够在新的任务中启动。因此,在使用multi_task flag启动Activity时,需要仔细考虑相关的权限和启动模式设置。 总之,Android中multi_task flag具体含义是允许Activity在独立的任务中运行,以实现在不同任务之间切换的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值