`
sharp2wing
  • 浏览: 271927 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

BroadcastReceiver的区别细究

阅读更多
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。这个标志是唯一使用的系统服务作为一种方便避免实施更复杂的机制在启动完成检测。
分享到:
评论

相关推荐

    BroadcastReceiver

    BroadcastReceiver是Android系统中的一个重要组件,它用于接收和响应系统或应用程序广播的意图(Intent)。在Android中,广播是系统用来在不同的应用组件之间传递消息的一种机制,无需这些组件之间有明确的依赖关系...

    broadcastReceiver

    ### 广播接收器(BroadcastReceiver)在Android中的应用与管理 #### 概念 `BroadcastReceiver`作为Android四大组件之一,在系统与应用之间扮演着关键的信息传递角色。不同于Activity等具有用户界面的组件,`...

    android BroadcastReceiver相关测试代码

    在Android开发中,BroadcastReceiver是系统广播机制的重要组成部分,它允许应用程序在不直接交互的情况下接收并响应系统或自定义广播事件。BroadcastReceiver是Android四大组件之一,用于处理系统全局的事件通知。本...

    BroadCastReceiver

    在Android系统中,`BroadcastReceiver`(广播接收者)是一种重要的组件,用于监听并响应系统或应用程序发送的各种广播意图(Intent)。广播是Android系统中的一种全局通知机制,它允许应用程序在不相互依赖的情况下...

    BroadcastReceiver的生命周期

    在Android系统中,BroadcastReceiver是应用组件之一,用于接收并响应系统或应用程序广播事件。BroadcastReceiver的生命周期简单而高效,主要涉及两个关键阶段:注册和接收广播。 标题“BroadcastReceiver的生命周期...

    BroadcastReceiver学习(01)

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图。BroadcastReceiver允许应用在不运行的情况下接收到消息,从而实现后台通信和事件处理。在这个...

    Android \BroadCastReceiver 简介

    所以,`BroadcastReceiver` 的生命周期非常短暂,必须高效地处理接收到的广播事件。 在 Android 系统中,`BroadcastReceiver` 是一个关键组件,它允许应用程序对外部事件进行响应,比如系统级别的事件(如电池状态...

    BroadcastReceiverDemo

    BroadcastReceiver在Android系统中扮演着一个至关重要的角色,它是Android应用程序与系统事件交互的主要途径。在给定的"BroadcastReceiverDemo"示例中,我们将会深入理解BroadcastReceiver的工作原理以及如何通过...

    《BroadcastReceiver详解》对应源码

    5. **Context和Activity的区别**:在`onReceive()`方法中,BroadcastReceiver的Context并不是Activity的Context,这意味着不能直接启动Activity或者显示Dialog。如果需要这些操作,通常需要先将BroadcastReceiver的...

    BroadcastReceiver使用demo

    BroadcastReceiver是Android系统中的一个重要组件,它用于接收并响应系统或应用广播事件。在这个"BroadcastReceiver使用demo"中,我们将深入探讨BroadcastReceiver的工作原理、如何创建与注册、以及如何发送和接收...

    Android BroadcastReceiver

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听系统或应用程序级别的广播事件。广播是Android系统进行组件间通信的一种重要方式,可以无须直接交互就能传递消息。本教程将深入讲解...

    Android学习之BroadcastReceiver总结

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它扮演着接收系统或应用广播消息的重要角色。BroadcastReceiver使得应用可以在不运行的情况下,响应系统或其它应用发出的事件,例如系统启动完成...

    Android的BroadcastReceiver简单示例

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听系统或应用程序发布的广播消息。BroadcastReceiver能够使应用在不运行的情况下对特定事件做出响应,从而实现跨应用通信。本示例将详细...

    BroadcastReceiver介绍

    ### BroadcastReceiver详细介绍 #### 一、概述 在Android开发中,`BroadcastReceiver`是四大组件之一,主要用于接收并处理系统或应用程序发出的广播消息。通过这种方式,应用之间可以进行简单的通信和交互,使得...

    安卓应用BroadcastReceiver源码.rar

    【BroadcastReceiver源码解析】 BroadcastReceiver是Android系统中的一个重要组件,它是Android应用程序接收系统广播事件的主要途径。在Android系统中,任何全局性、瞬时性的事件,如网络连接状态变化、系统启动...

    android demo,BroadcastReceiver源代码的实现。

    在Android系统中,BroadcastReceiver(广播接收者)是四大组件之一,它负责监听并响应系统或应用程序发布的广播意图(Intent)。这个"android demo,BroadcastReceiver源代码的实现"是一个示例,旨在帮助开发者理解...

    BroadcastReceiver 最好作为内部类

    在Android开发中,`BroadcastReceiver` 是一个至关重要的组件,它允许应用程序接收并响应系统或应用广播事件。本文将深入探讨`BroadcastReceiver`作为内部类的优缺点以及如何使用。 首先,让我们理解`...

    android BroadcastReceiver 源码

    在Android系统中,BroadcastReceiver是实现跨进程通信和全局事件通知的重要组件。它允许应用程序接收并响应系统或自定义广播事件,即使应用没有在运行。本文将深入探讨`BroadcastReceiver`的源码,帮助你理解其工作...

Global site tag (gtag.js) - Google Analytics