拉萨市建材网络科技有限公司
首页 | 联系方式 | 加入收藏 | 设为首页 | 手机站

产品目录

联系方式

联系人:业务部
电话: 00165-55511
邮箱:service@ydkmjgds.com

当前位置:首页 >> 产品展示 >> 默认分类 >> 正文

android 解决广播接收延时问题:前台广播

详细信息:

android 解决广播接收延时问题:前台广播 。

Intent mIntent = new Intent("android.intent.action.MASTER_CLEAR");
 mIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); 
 mContext.sendBroadcast(mIntent);

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.