·BroadcastReceiver定义

BroadcastReceiver(广播接收器),属于Android四大组件之一。

在Android开发中,BroadcastReceiver的应用场景特别多,广播是一个全局的监听器,属于Android四大组件之一。

Android广播分为两个角色:广播发送者、广播接收者。

·BroadcastReceiver的作用

用于监听/接受应用发出的广播消息,并作出相应。

应用场景:

1 不同组件之间的通信(包括应用内/不同应用之间)

2 与Android系统在特定情况下的通信(如电话呼入时)

3 多线程通信。

·BroadcastReceiver的实现原理

Android中的广播使用了设计模式中的观察者模式:基于消息的发布/订阅事件模式。(将广播的发送者和接收者解耦,使得系统方便继承,更易于扩展)

模型中有3个角色:1 消息订阅者(广播接收者) 2 消息发布者(广播发布者) 3 消息中心(AMS,即Activity Manager Service)

原理描述:

1 广播接受者通过Binder机制在AMS注册

2 广播发送者通过Binder机制向AMS发送广播

3 AMS根据广播发送者要求,在已注册列表中,寻找合适的广播接收者

4 AMS将广播发送到合适的广播接收者相应的消息循环队列中。

5 广播接收者通过消息循环拿到此广播,并回调onReceive()

特别注意:广播发送者和广播接收者的执行是异步的,发出去的广播不会关心有无接收者接收,也不确定接收者到底是何时才能接收到。

·广播接收器的两种注册

静态注册:常驻注册,不受任何组件的生命周期影响。程序关闭后,如果有信息广播来,程序就会被系统调用。缺点是比较耗电、占内存。需要时刻监听广播。

动态注册:非常驻注册,比较灵活,跟随组件的生命周期变化,组件结束即广播结束。需要特定时刻监听广播。

·广播的类型

1 普通广播:

即开发者自身定义的intent广播。若被注册了的广播接收者中注册时intentFilter的action与上述匹配,则会接受此广播(即进行回调onReceive())。

2 系统广播(System Broadcast)

Android中内置了多个系统广播,只要涉及到手机的基本操作(如开机、网络状态变化、拍照等等),都会发出相应的广播。

3 有序广播(Ordered Broadcast)

发送出去的广播被广播接收者按照Priority属性值大小先后顺序接收,Priority属性相同者,动态注册的广播优先。先接受的广播接收者可以对广播进行截断和修改。

4 APP应用内广播

Android中的广播可以进行跨进程通信,由此可能出现安全隐患。App应用内广播可以理解为一种局部广播的形式,广播的发送者和接收者同属于一个App。

BroadcastReceiver相关推荐

  1. android receiver 通知,android – 来自BroadcastReceiver的呼叫通知

    我有代码: public void AlarmStart() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MINUTE, 5); ...

  2. Android组件系列----BroadcastReceiver广播接收器

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. android系统休眠发广播,Android - BroadcastReceiver

    BroadcastReceiver BroadcastReceiver,广播接收者,用来接收系统和应用的广播,并做出相应的处理,如电量过低时提示用户充电等: BroadcastReceiver 是 A ...

  4. android 增加一条广播,Android中BroadcastReceiver广播使用及注意点

    Android中的广播用途很广,是四大组件之一.在android中可以看到它的各种应用,从系统发出的广播,用户自定义的广播等. 这里详细记录下广播的分类以及使用方法. 广播,是由两方面组成一个流程:广 ...

  5. Android 笔记:BroadcastReceiver

    1 是什么 2 怎么用 3 两种注册方式 4 两种类型 5 生命周期 6 注意事项 复制代码 前言 BroadcastReceiver是什么? --- 广播(通知消息)接收器 在Android的API ...

  6. BroadcastReceiver应用详解(一)

    原文:http://blog.csdn.net/liuhe688/article/details/6955668# BroadcastReceiver也就是"广播接收者"的意思,顾 ...

  7. android广播过滤器.*,android – BroadcastReceiver与多个过滤器或多个BroadcastReceivers?...

    我有一个Android Activity需要捕获两个不同的广播.我目前的方法是在活动中有一个单一的BroadcastReceiver,并抓住它的广播: public class MyActivity ...

  8. android广播intent原理,Android中BroadcastReceiver详解

    BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...

  9. Android笔记三十三.BroadcastReceiver使用

        广播是一种广泛运用在应用程序之间传输信息的机制,而BroadcastReceiver是对发送出来的广播进行过滤接收并响应的一类组件. BroadcastReceiver本质上是一种全局监听器. ...

  10. Android开发之使用BroadcastReceiver实现开机自动启动(源代码分享)

    上一节已经介绍过BroadcastReceiver实现实时监听电量的功能,这节就来介绍一下如果实现开机自动启动的功能,这个比监听电量还简单不少 (1)在清单文件注册权限 <uses-permis ...

最新文章

  1. (转)Javascript模块化编程(一):模块的写法
  2. HATEOAS REST Service
  3. 五丶阿东安装部署教程+青龙对接阿东及傻妞实现自动登录
  4. 题目1160:放苹果
  5. (八十二)利用苹果服务器获取导航信息和绘制路径
  6. 微信小程序align_微信小程序四色花瓣
  7. Android 系统构架(转)
  8. 教小学妹学算法:搜索算法解决迷宫问题
  9. MySQL Aggregate (GROUP BY) Function Descriptions
  10. python词云可视化方法总结记录【简单词云+背景图片词云+自定义字体颜色词云】
  11. 【WePY小程序框架实战四】-使用asyncawait异步请求数据
  12. SQLite: 关于日期的标准化问题
  13. STM32—驱动GY85-IMU模块
  14. python课程设计爬虫篇_11 个案例开启 Python 爬虫初体验
  15. Win11 无法使用IE11浏览器的解决办法
  16. Python爬取百度图片(高清原图)
  17. 计算机连接打印机连接打印机,怎么连接打印机.教您怎么连接打印机
  18. WebX配置文件、启动与响应流程
  19. AGV搬运机器人磁导航传感器D-MNSV7-X16安装方法与注意事项
  20. 成都Java培训班帮你分析如何通过企业面试

热门文章

  1. gis等时圈怎么做_画个圈就叫“等时圈”?别逗了!手把手教你做等时圈
  2. 4.有两个知阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于知阵相加。如:c=a+b。
  3. nginx+tomcat动态代理
  4. 网卡用来实现计算机和什么之间的物理链接,2015年上期《计算机网络技术》期中考试试卷...
  5. 电影演员合作关系可视化(一)整体思路与爬虫编写
  6. Rive在Flutter开发中的基本用法
  7. 截至 2005年11月29日 CSDN 单独任命制度下的5星用户名单
  8. SD/MMC卡初始化及读写流程
  9. JAVA语言中 文本框类的类名是_这是什么?
  10. 阿里技术专家:日活5亿的淘宝技术发展历程和架构经验分享!18页ppt详解