BroadcastReceiver
·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相关推荐
- android receiver 通知,android – 来自BroadcastReceiver的呼叫通知
我有代码: public void AlarmStart() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MINUTE, 5); ...
- Android组件系列----BroadcastReceiver广播接收器
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- android系统休眠发广播,Android - BroadcastReceiver
BroadcastReceiver BroadcastReceiver,广播接收者,用来接收系统和应用的广播,并做出相应的处理,如电量过低时提示用户充电等: BroadcastReceiver 是 A ...
- android 增加一条广播,Android中BroadcastReceiver广播使用及注意点
Android中的广播用途很广,是四大组件之一.在android中可以看到它的各种应用,从系统发出的广播,用户自定义的广播等. 这里详细记录下广播的分类以及使用方法. 广播,是由两方面组成一个流程:广 ...
- Android 笔记:BroadcastReceiver
1 是什么 2 怎么用 3 两种注册方式 4 两种类型 5 生命周期 6 注意事项 复制代码 前言 BroadcastReceiver是什么? --- 广播(通知消息)接收器 在Android的API ...
- BroadcastReceiver应用详解(一)
原文:http://blog.csdn.net/liuhe688/article/details/6955668# BroadcastReceiver也就是"广播接收者"的意思,顾 ...
- android广播过滤器.*,android – BroadcastReceiver与多个过滤器或多个BroadcastReceivers?...
我有一个Android Activity需要捕获两个不同的广播.我目前的方法是在活动中有一个单一的BroadcastReceiver,并抓住它的广播: public class MyActivity ...
- android广播intent原理,Android中BroadcastReceiver详解
BroadcastReceiver是什么? Android app可以发送广播也可以接收系统或者其它app发送的广播,是发送/订阅的设计模式.这些广播被发送当重要的事件发生的时候.例如,安卓系统发送广 ...
- Android笔记三十三.BroadcastReceiver使用
广播是一种广泛运用在应用程序之间传输信息的机制,而BroadcastReceiver是对发送出来的广播进行过滤接收并响应的一类组件. BroadcastReceiver本质上是一种全局监听器. ...
- Android开发之使用BroadcastReceiver实现开机自动启动(源代码分享)
上一节已经介绍过BroadcastReceiver实现实时监听电量的功能,这节就来介绍一下如果实现开机自动启动的功能,这个比监听电量还简单不少 (1)在清单文件注册权限 <uses-permis ...
最新文章
- (转)Javascript模块化编程(一):模块的写法
- HATEOAS REST Service
- 五丶阿东安装部署教程+青龙对接阿东及傻妞实现自动登录
- 题目1160:放苹果
- (八十二)利用苹果服务器获取导航信息和绘制路径
- 微信小程序align_微信小程序四色花瓣
- Android 系统构架(转)
- 教小学妹学算法:搜索算法解决迷宫问题
- MySQL Aggregate (GROUP BY) Function Descriptions
- python词云可视化方法总结记录【简单词云+背景图片词云+自定义字体颜色词云】
- 【WePY小程序框架实战四】-使用asyncawait异步请求数据
- SQLite: 关于日期的标准化问题
- STM32—驱动GY85-IMU模块
- python课程设计爬虫篇_11 个案例开启 Python 爬虫初体验
- Win11 无法使用IE11浏览器的解决办法
- Python爬取百度图片(高清原图)
- 计算机连接打印机连接打印机,怎么连接打印机.教您怎么连接打印机
- WebX配置文件、启动与响应流程
- AGV搬运机器人磁导航传感器D-MNSV7-X16安装方法与注意事项
- 成都Java培训班帮你分析如何通过企业面试
热门文章
- gis等时圈怎么做_画个圈就叫“等时圈”?别逗了!手把手教你做等时圈
- 4.有两个知阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于知阵相加。如:c=a+b。
- nginx+tomcat动态代理
- 网卡用来实现计算机和什么之间的物理链接,2015年上期《计算机网络技术》期中考试试卷...
- 电影演员合作关系可视化(一)整体思路与爬虫编写
- Rive在Flutter开发中的基本用法
- 截至 2005年11月29日 CSDN 单独任命制度下的5星用户名单
- SD/MMC卡初始化及读写流程
- JAVA语言中 文本框类的类名是_这是什么?
- 阿里技术专家:日活5亿的淘宝技术发展历程和架构经验分享!18页ppt详解