您的位置:首页 > 移动开发 > Android开发

android Intent启动flag

2013-10-30 14:47 225 查看
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: