BroadcastReceiver 的区别细究
来源:互联网 发布:欧洲绿化 纳粹 知乎 编辑:程序博客网 时间:2024/05/30 05:30
1.android有序广播和无序广播的区别
BroadcastReceiver所对应的广播分两类:普通广播和有序广播。
普通广播通过Context.sendBroadcast()方法来发送。它是完全异步的。
所有的receivers接收器的执行顺序不确定。 因此,所有的receivers接收器接收broadcast的顺序不确定。
这种方式效率更高。但是BroadcastReceiver无法使用setResult系列,getResult系列及abort系列API
有序广播是通过Context.sendOrderedBroadcast来发送。所有的receiver依次执行。
BroadcastReceiver可以使用setResult系列函数来结果传给下一个BroadcastReceiver,通过getResult系列函数来取得上个BroadcastReceiver返回的结果,并可以abort系列函数来让系统丢弃该广播让,使用该广播不再传送到别的BroadcastReceiver。
可以通过在intent-filter中设置android:priority属性来设置receiver的优先级。优先级相同的receiver其执行顺序不确定。
如果BroadcastReceiver是代码中注册的话,且其intent-filter拥有相同android:priority属性的话,先注册的将先收到广播。
有序广播,即从优先级别最高的广播接收器开始接收,接收完了如果没有丢弃,就下传给下一个次高优先级别的广播接收器进行处理,依次类推,直到最后。
2.sendBroadcast和sendStickyBroadcast的区别
sendBroadcast中发出的intent在ReceverActivity不处于onResume状态是无法接受到的,即使后面再次使其处于该状态也无法接受到。
而sendStickyBroadcast发出的Intent当ReceverActivity重新处于onResume状态之后就能重新接受到其Intent.这就是the Intent will be held to be re-broadcast to future receivers这句话的表现。就是说sendStickyBroadcast发出的最后一个Intent会被保留,下次当Recevier处于活跃的时候,又会接受到它。
3. FLAG的影响
1)FLAG_RECEIVER_REPLACE_PENDING
这个flag 将会将之前的Intent 替代掉。加了这个flag,在发送一系列的这样的Intent 之后, 中间有些Intent 有可能在你还没有来得及处理的时候,就被替代掉了。
2)FLAG_RECEIVER_REGISTERED_ONLY:
如果Intent 加了这个Flag, 那么在Androidmanifest.xml 里定义的Receiver 是接收不到这样的Intent 的。
3)FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT:
如果Intent加了这个Flag,那么在启动检查时只能接受在代码中注册的Receiver。这个标志是唯一使用的系统服务作为一种方便避免实施更复杂的机制在启动完成检测。
0 0
- BroadcastReceiver 的区别细究
- BroadcastReceiver的区别细究
- 细究C++中const_iterator与const迭代器的区别
- EventBus 和 BroadcastReceiver 的区别
- 关于PSP-T082主板的鉴别方法细究
- Android的BroadcastReceiver和EventBus区别是什么
- BroadcastReceiver和EventBus区别
- 注册BroadcastReceiver的方法以及它们的区别
- 【有趣的面试算法题】 数组循环移动算法细究
- Android注册BroadcastReceiver的两种办法及其区别
- BroadCastReceiver静态注册、与动态注册的区别?
- BEGIN_MESSAGE_MAP 细究
- BroadcastReceiver的生命周期
- [Android] BroadCastReceiver的使用
- BroadcastReceiver 的创建
- BroadcastReceiver的生命周期
- BroadcastReceiver 的生命周期
- 对BroadcastReceiver的理解
- COM三大接口:IUnknown、IClassFactory、IDispatch
- htmlde 的简单使用
- Mac iOS RSA 私钥和公钥的生成
- Learning Links
- 异常介绍、自定义异常、异常面试题
- BroadcastReceiver 的区别细究
- WAS对于主机名的要求
- 前台session判空良策!
- 我目前工作的综述
- PHP的加密解密字符串函数
- Android中EditText的setError文字不显示的问题
- easyui datagrid 的使用
- “互联网+”时代,企业移动云生态体系如何构建?
- ActiveMQ Redelivery Policy(消息重发策略)