1、广播信息
             在Android中,Broadcast是一种广泛运用在应用程序之间异步传输信息的机制。Android系统通过发出广播消息,来通知各应用组件一些系统事件,如地域变换、电量不足、来电信息等,这些消息通常称为系统消息。第三方应用也可以广播消息,这些消息称为自定义消息。广播消息在本质上就是一个Intent对象。
            
             BroadcastReceiver用于接收并处理广播消息。不管是系统消息还是自定义消息,都可以通过BroadcastReceiver来进行处理。形象的比喻,Intent是一种一对一的通信,广播消息是一种一对多的通信。
2、 广播消息的处理流程
            对于广播消息的处理,大致要经过消息发送、BroadcastReceiver注册和消息处理三个环节。
3、消息发送
            广播消息的实质就是一个Intent对象。使用sendBroadcast()或sendStickyBroadcast()方法发出去的Intent,所有满足条件的BroadcastReceiver都会随机地执行其onReceive()方法;而sendOrderBroadcast()发出去的Intent,会根据BroadcastReceiver注册时Intent Filter 设置的优先级的顺序来执行,相同优先级的BroadcastReceiver则是随机执行。sendStickyBroadcast()方法主要的不同的是,Intent在发送后一直存在,并且在以后调用registerReceiver注册相匹配的BroadcastReceiver时会把这个Intent直接返回。
4、注册BroadcastReceiver
             注册BroadcastReceiver有两种方式:
             一种方式是,静态地在AndroidManifest.xml中用<receiver>标签声明,并在标签内用<intent-filter>标签设置过滤器
              另一种方式是,动态在代码中先定义并设置好一个Intent Filter 对象,然后再需要注册的地方调用Context.registerReceiver(BroadcastReceiver,intentFilter)方法,如果取消时就调用Context.unregisterReceiver(BroadcastReceiver)方法。如果用动态注册BroadcastReceiver的Context对象被销毁时,BroadcastReceiver也就自动取消注册了。根据Activity组件的生命周期,通常在onResume中注册BroadcastReceiver,在onPause中取消BroadcastReceiver。
5、处理消息
             当广播消息发送以后,所有已经注册的BroadcastReceiver会检查注册时的Intent Filter是否与发送的Intent相匹配,若匹配则就会调用BroadcastReceiver的onReceive()方法。另外,若在使用sendBroadcast()的方法是指定了接收权限,则只有在AndroidManifest.xml中用标记<uses-permission>声明了拥有此权限的BroadcastReceiver才会有可能接收到发送来的Broadcast。
            
             一个BroadcastReceiver可以处理多个广播消息,具体做法为在onReceive()方法调用Intent参数的getAction判断传进来的动作,即可进行不同的处理。
6、处理系统广播消息
              在广播消息中,有一类特殊的广播消息,它们特殊在只能由Android系统发出,这类广播消息称为系统广播。
             ACTION_TIME_TICK  系统时间已经改变。该事件每分钟被广播一次,只能通过动态注册BroadcastReceiver来响应。
             ACTION_TIME_CHANGED  系统时间被设置
             ACTION_TIMEZONE_CHANGED  系统时区被改变
             ACTION_BOOT_COMPLETED    系统启动完成
             ACTION_PACKAGE_ADDED    新的应用程序被安装
             ACTION_PACKAGE_CHANGED  应用程序被改变
             ACTION_PACKAGE_REMOVED  应用程序被卸载
             ACTION_PACKAGE_RESTARTED  应用程序被重新启动
             ACTION_PACKAGE_DATA_CLEARED  应用程序数据被清空
             ACTION_UID_REMOVED  用户ID被删除
             ACTION_BATTERY_CHANGED 点量信息改变
             ACTION_POWER_CONNECTED  外接电源被连通
             ACTION_POWER_DISCONNECTED 外接电源被断开
             ACTION_SHUTDOWN    系统关闭
            静态注册BroadcastReceiver 很简单,需要在AndroidManifest文件中增加一个receiver节点,并且在节点中嵌套一个intent-filter来声明组件响应的Intent对象的属性,在autorun例子中,为系统广播android.intent.action.BOOT_COMPLETED的应用权限的声明。
7、深入消息处理
             广播消息的发送方式由多种:
             无序广播
             有序广播
             持续广播
8、BroadcastReceiver的生命周期
            BroadcastReceiver的onReceive()方法执行完成后,BroadcastReceiver的实例就会被销毁。如果onReceive()方法在10s内没有执行完毕,Android会认为改程序无响应。所以在BroadcastReceiver里不能做一些比较耗时的操作,否则会弹出“Application NoResponse”对话框。特别说明的是,这里不能使用子线程来解决,因为BroadcastReceiver的生命周期很短,子线程可能还没有结束BroadcastReceiver就先结束了。BroadcastReceiver一旦结束,此时它所在的进程很容易在系统需要内存时被优先杀死,因为它属于空进程。
        总结:注册的方式由静态注册和动态注册两种。对于有序消息,动态注册的BroadcastReceiver总是先于静态注册的BroadcastReceiver被触发。对于同样是动态注册的BroadcastReceiver,优先级别高的将先被触发,而静态注册的BroadcastReceiver总是按照静态注册的顺序执行。

Broadcast广播消息相关推荐

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

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

  2. rocketmq广播消息为什么不能重试_几分钟带你看懂“消息队列和RocketMQ”的入门总结

    消息队列扫盲 消息队列顾名思义就是存放消息的队列,队列我就不解释了,别告诉我你连队列都不知道似啥吧? 所以问题并不是消息队列是什么,而是 消息队列为什么会出现?消息队列能用来干什么?用它来干这些事会带 ...

  3. RocketMQ-初体验RocketMQ(09)-广播消息、延时消息、批量消息

    文章目录 广播消息 广播消息概述 演示步骤 延时消息 概述 使用场景 延时机制 实现原理 示例 批量消息 批量消息概述 示例 代码 广播消息 广播消息概述 广播消息就是向所有用户发送消息. 如果我们希 ...

  4. Android Broadcast广播机制分析

    基于Android 6.0的源码剖析, 分析android广播的发送与接收流程. 一.概述 广播(Broadcast)机制用于进程/线程间通信,广播分为广播发送和广播接收两个过程,其中广播接收者Bro ...

  5. 中标麒麟NeokylinV7关闭广播消息

    中标麒麟NeokylinV7关闭广播消息 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 文章目录 中标麒麟NeokylinV7关闭广 ...

  6. Broadcast广播-Android

    一.Broadcast 1.定义 在 Android 中,Broadcast 是一种在应用程序之间传输信息的机制,要发送的广播内容是一个 Intent,这个 Intent 中可以携带我们要传送的数据. ...

  7. Upd通信之QUdpSocket的unicast单播、broadcast广播、multicast组播

    简 述: 了解Upd通信之QUdpSocket的unicast单播.broadcast广播.multicast组播,书写一个简单地例子:然后写了一个小的Qt例子,用来实现和验证它的空间的一些属性和功能 ...

  8. 【Android入门】5、Broadcast 广播、Kotlin 的高阶函数、泛型、委托

    六.BroadCast 广播 广播用于在Android系统内实现通知,概念较为简单 为了实现上述效果, 代码如下 基础类如下, 定义了receiver, 当收到消息时, 触发receiver逻辑(弹窗 ...

  9. Broadcast 广播使用详解

    和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一.Broadcast概述 二.Broadcast的注册 三.Broadcast的注册类型 四.静态注册 ...

最新文章

  1. 图深度学习:成功,挑战以及后面的路
  2. apache配置证书后 tomcat无法访问_给你的项目配置个https吧
  3. HihoCoder - 1445 后缀自动机二·重复旋律5(后缀自动机)
  4. POE交换机供电原理及工作过程
  5. Windows Socket 编程_ 简单的服务器/客户端程序
  6. 飞思卡尔imx7 html5,i.MX6UL 飞思卡尔即将发布基于ARM Cortex-A7核心的低功耗处理器 i.MX 6UltraLite Processor...
  7. 细说 Form (表单)
  8. (42)根据时钟关系分类时钟
  9. 随想录(lcc编译器)
  10. 漫画:什么是神秘的“凯利公式”?
  11. 【学习笔记】《分布式光纤振动传感系统技术的研究与实现--华科--邹**--光学工程》重点笔记
  12. win10系统怎么设置网卡优先级
  13. 计算机检索系统常用的运算符,计算机信息检索过程中常用的检索表达式 计算机信息检索系统.doc...
  14. 数字乡村建设浅谈(一):可行性、难点、思考
  15. Python面试题大全总结
  16. Tomcat服务器端口修改
  17. 20170416郑州市轻工业学院ACM校赛
  18. leaflet 加载腾讯地图
  19. 我的2021秋招记录
  20. 工具篇:解压缩工具 tar

热门文章

  1. 管理学院人工智能蹭课一
  2. map的嵌套使用方法
  3. WinSCP 连接错误:列出‘/‘的目录项时出错。
  4. java窗口程序实例_Java Swing快速构建窗体应用程序
  5. 360全景拍摄教程:鱼眼全景图拍摄方法
  6. 【重磅】全球AI芯片排行榜发布 解读入围的七家中国公司
  7. 常用数学符号读法及其含义
  8. html音乐跳动的线,HTML5 Audio+Matter.js 随音乐节奏而动的踩单车杂技表演
  9. 新泰一中2021年高考成绩查询,2021年新泰市高考状元名单资料,今年新泰市高考状元多少分...
  10. 第一个实训项目(2)