1, 生命周期

在android官方文档中,推荐我们在onResume中进行 registerReceiver, 在onPause中进行unRegisterReceiver。 他们给出的理由是:

If registering a receiver in your Activity.onResume() implementation, you should unregister it in Activity.onPause().
(You won't receive intents when paused, and this will cut down on unnecessary system overhead). Do not unregister in Activity.onSaveInstanceState(), because this won't be called if the user moves back in the history stack.

2,有序广播和无序广播的差别

广播接收者(BroadcastReceiver)用于监听系统事件或应用程序事件,通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()能够向系统发送广播意图,通过广播一个意图(Intent)能够被多个广播接收者所接收,从而能够在不用改动原始的应用程序的情况下,让你对事件作出反应。





       当中Context.sendBroad()主要是用来广播无序事件(也被称为有序广播 Normal broadcast),即全部的接收者在理论上是同一时候接收到事件。同一时候运行的,对消息传递的效率而言这是比較好的做法。而Context.sendOrderedBroadcast()方法用来向系统广播有序事件(Ordered broadcast),接收者依照在Manifest.xml文件里设置的接收顺序依次接收Intent。顺序运行的,接收的优先级能够在系统配置文件里设置(声明在intent-filter元素的android:priority属性中,数值越大优先级别越高,其取值范围为-1000到1000。当然也能够在调用IntentFilter对象的setPriority()方法进行设置)。对于有序广播而言,前面的接收者能够对接收到得广播意图(Intent)进行处理。并将处理结果放置到广播意图中,然后传递给下一个接收者,当然前面的接收者有权终止广播的进一步传播。假设广播被前面的接收者终止后,后面的接收器就再也无法接收到广播了。

3, 持久广播 sendStickyBroadcast

sticky 类型的广播会保存 上次广播的intent, 仅仅要你注冊到这个广播, 就能够直接获得上次的intent 。(直到removeStickyBroadcast 该广播)



     Perform a sendBroadcast(Intent) that is "sticky," meaning the Intent you are sending stays around after the broadcast is complete, so that others can quickly retrieve that data through the return value of registerReceiver(BroadcastReceiver, IntentFilter).
In all other ways, this behaves the same as sendBroadcast(Intent).



You must hold the BROADCAST_STICKY permission in order to use this API. If you do not hold that permission,SecurityException will be thrown.



大概的意思是说: 发出的广播会一直滞留(等待),以便有人注冊这则广播消息后能尽快的收到这条广播。其它功能与sendBroadcast同样。可是使用sendStickyBroadcast 发送广播须要获得BROADCAST_STICKY permission,假设没有这个permission则会抛出异常。



而有序类型的广播。则不会保存intent, 假设当时没得到intent,则以后也得不到。

4, 广播生命周期

每次广播到来时 , 会又一次创建 BroadcastReceiver 对象 , 而且调用 onReceive() 方法 , 运行完以后 , 该对象即被销毁 . 当 onReceive() 方法在 10 秒内没有运行完成, Android 会觉得该程序无响应。

android Broadcast 总结的更多相关文章

  1. android Broadcast介绍

    在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制.而BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件.发送Broadca ...

  2. Android Broadcast Receiver 使用入门

    Broadcast Receiver 的使用        1.Broadcast Receiver简介        2.Broadcast Receiver接收系统自带的广播        3.自 ...

  3. Android Broadcast Receiver注册

    之前有关 Broadcast Receiver的链 动态注册 1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onRece ...

  4. Android——Broadcast Receive 相关知识总结贴

    Android系统中的广播(Broadcast)机制简要介绍和学习计划 http://www.apkbus.com/android-99858-1-1.html android----BroadCas ...

  5. Android -- Broadcast接收

    Broadcast是Android四大组件之一,是一种广泛运用的在应用程序之间传输信息的机制.最经典的举例是: “我们拿广播电台来做个比方.我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特 ...

  6. Android Broadcast Security(转)

    原文地址:http://drops.wooyun.org/tips/4393 0x00 科普 Broadcast Recevier 广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件.很多广 ...

  7. Android Broadcast Receive

    Broadcast Receive 广播接收(Broadcast Receive)为android的四大组件之一.主要用于监听广播消息,并做出响应.与应用程序中监听事件相比而言,该监听事件为全局监听. ...

  8. android Broadcast广播消息代码实现

    我用的是Fragment , 发送写在一个类中,接收写在另外一个类的内部类中.代码动态实现注册. 代码: myReceiver = new zcd.netanything.MyCar.myReceiv ...

  9. Android Broadcast Receiver

    说明 有时候我们在做android系统软件的时候,经常会需要做的事就是开机重新设置上次关机前的状态,当然,我们就会用到这个开机广播: <uses-permission android:name= ...

随机推荐

  1. LACP学习笔记

    LACP学习笔记 来源: https://blog.csdn.net/zhengmx100/article/details/53893902 参考文档:download.h3c.com.cn/down ...

  2. Codeforces Round #356 (Div. 2) C

    C. Bear and Prime 100 time limit per test 1 second memory limit per test 256 megabytes input standar ...

  3. foj Problem 2282 Wand

     Problem 2282 Wand Accept: 432    Submit: 1537Time Limit: 1000 mSec    Memory Limit : 262144 KB Prob ...

  4. 一种机制,与js类似

    我们知道,当两个条件进行逻辑与操作的时候,其中任何一个条件为假,则表达式的结果为假.所以,遇到(A 且 B)这种表达式,如果A为假的话,B是不是真假都无所谓了,当遇到一个假条件的时候,程序也就没有必要 ...

  5. [ZJOI2008]树的统计——树链剖分

    本题是一个树链剖分裸题,由于比较菜,老是RE,后来发现是因为使用了全局变量. /************************************************************ ...

  6. python的递归算法学习(2):具体实现:斐波那契和其中的陷阱

    1.斐波那契 什么是斐波那契,斐波那契额就是一个序列的整数的排序,其定义如下: Fn = Fn-1 + Fn-2 with F0 = 0 and F1 = 1 也就是,0,1,1,2,3,5,8,13 ...

  7. NetStream论文

    https://max.book118.com/html/2016/0102/32573670.shtm http://www.docin.com/p-1568348795.html

  8. 日志三剑客ELK

    新的服务器需要搭建ELK三剑客,就是日志分析的工具,整理下步骤,供以后复习用. 说明下,我这里使用的是logstash从redis里获取日志信息的.所以还需要redis,这里就不做redis的介绍了. ...

  9. html5进阶之canvas图像基础

    1.首先还是使用之前讲过的Image()函数来预加载图像. 在调用图像之前,需创建一个事件监听器,为其保证图像已经正确的加载. 如下图: 监听图片已经正确加载 2.把图像显示在画布上面,这里将不再使用 ...

  10. 在16aspx.com上下了一个.net程序,怎么修改它的默认登录名和密码?

    正常应该有个login.aspx文件,找到登入按钮事件,查看验证用户名密码事件,这个验证就有去搜索用户表,然后在这个用户表修改用户名密码就行了.不排除其他表有用用户名关联