BroadcastReceiver介绍
参考资料 : 基础总结篇之五:BroadcastReceiver应用详解
BroadcastReceiver用于接收广播信息,可以通过sendBroadcast等方法进行发送。sendBroadcast、sendOrderedBroadcast、sendStickBroadcast都是android.content.ContextWrapper类的方法,而Activity和Service都继承了这个类,所有Activity和Service都可以执行发送广播的功能。
1、BroadcastReceiver的注册方式分为静态注册和动态注册。动态注册的Receiver可以随时注册(registerReceiver)和注销(unregisterReceiver)
- 静态注册
- 定义自己的Receiver(MyReceiver)
- 在Manifest中添加receiver标签
- 在Activity或Service中sendBroadcast等方法发送广播
- 动态注册
- 定义自己的Receiver(MyReceiver)
- 在Activity或Service中使用registerReceiver注册广播。声明IntentFilter对象,对receiver进行说明,相当于Manifest文件中对应的intent-filter标签
- 在Activity或Service中sendBroadcast等方法发送广播
- 静态注册
2、广播方式
- 一般广播(sendBroadcast)
- 广播一经发出,所有接收这种action的广播都会接收到,没有办法终止。
- 有序广播(sendOrderedBroadcast)
- 广播发出后,会按照Receiver优先级的高低先后调用。先被调用的Receiver可以增加自己的信息传递给后面的Receiver,也可以中断Receiver的继续传递(使用abortBroadcast)。
- 一般广播(sendBroadcast)
sendStickyBroadcast和sendStickyOrderedBroadcast,与其对应的sendBroadcast和sendOrderedBroadcast相似。只是,使用sticky发送的广播会驻留在系统中,等待Receiver接收。即可以先发送广播,后注册接收器。使用removeStickyBroadcast移除。
3、安全方面的考虑
- 在定义对应的action时,加上包名。这样既可以起到保护broadcastReceiver的作用,也可以避免和其他人定义的action冲突
- 在注册(registerReceiver(BroadcastReceiver,IntentFilter))的时候,可以增加权限,使没有权限的广播不会传递到自己的broadcastReceiver中
- 如果想要禁止任何其他app发送的广播到达自己的broadcastReceiver,可以在Manifest文件中设置:android:exported="false"
- 在调用sendBroadcast时(从
ICE_CREAM_SANDWICH版本开始),可以指定将要把广播发送到哪个包中。使用Intent.setPackage() - 以上注册和发送的方式都是使用Context类对应的方法,可以使用LocalBroadcastManager来注册和发送广播
- 如果确定不会将广播发送到其他app中,可以使用LocalBroadcastManager对象对应的sendBroadcast方法
- 如果确定不会接收其他app发送的广播,可以使用LocalBroadcastManager对象对应的registerReceiver方法
LocalBroadcastManager的特点:
- 发送的广播只会在自己的app中传播,可以确保隐私数据不会被泄露
- 别的app发送的广播不会传递到本BroadcastReceiver中,其他的app没有办法破坏本app的数据
- 效率更高
BroadcastReceiver介绍的更多相关文章
- 【转】Android BroadcastReceiver介绍
本文主要介绍BroadcastReceiver的概念.使用.生命周期.安全性.分类.特殊的BroadcastReceiver(本地.粘性.有序.粘性有序广播).示例代码见BroadcastReceiv ...
- Android BroadcastReceiver介绍 (转)
原文地址:http://www.cnblogs.com/trinea/archive/2012/11/09/2763182.html 本文主要介绍BroadcastReceiver的概念.使用.生命周 ...
- Android四大组件:BroadcastReceiver 介绍
介绍 BroadcastReceiver 即广播组件,是 Android 的四大组件之一.用于监听和接收广播消息,并做出响应.有以下一些应用: 不同组件之间的通信(应用内或不同应用之间). 多线程之间 ...
- Android - 广播接收者 - BroadcastReceiver
BroadcastReceiver 介绍: 广播是一种广泛运用的在应用程序之间传输信息的机制 .而 BroadcastReceiver 是对发送出来的广播 进行过滤接收并响应的一类组件 接受一种或者多 ...
- android 广播
关于广播以前感觉是一知半解的,这次看到同事整理的文档,顺带跟着再参考几篇博文也学习整理了下,先上个整理的图 代码模板 发送广播 public static final String RECEIVE_A ...
- Android开发全套视频教程在线观看网盘下载
千锋金牌讲师老罗老师简介: 国内第一批Android教学讲师,10多年软件开发经验,6年多教学经验,曾担任广东电信北京分公司移动事业部项目经理,主持过微软中国平台考试系统.山西省旅游局智能化平台等大型 ...
- android教学大纲
android班 教学大纲 个小时 次课:Android开发环境搭建及工具介绍 Android系统简介 Android开发环境简介及搭建 AndroidStudio提供的工具组件 次课:第一个Andr ...
- Android学习笔记总结
第一步: Android(1) - 在 Windows 下搭建 Android 开发环境,以及 Hello World 程序 搭建 Android 的开发环境,以及写一个简单的示例程序 · 在 Win ...
- android activity之间用广播传输数据
发送者: Intent intent = new Intent("com.BroadcastAction"); intent.putExtra("result" ...
随机推荐
- day3-课堂笔记
函数有2种: 1种是有返回值的,不改变对象本身 1种是没有返回值的,改变对象本身 eval函数就是实现list.dict.tuple与str之间的转化(只能把类似格式的字符串进行相应转换)str函 ...
- Android—将Bitmap图片保存到SD卡目录下或者指定目录
直接上代码就不废话啦 一:保存到SD卡下 File file = new File(Environment.getExternalStorageDirectory(), System.currentT ...
- QGIS里的编程模型
项目(QgsProject) 用于读写项目状态 图层分组(QgsLayerTreeGroup) 项目树的分组节点,用来存放图层节点. 图层节点(QgsLayerTreeLayer) 项目树的图层节点. ...
- 使用 zTree 右键菜单功能的总结
一: 首先什么是zTree? zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点.专门适合项目开发,尤其是 树状菜单.树状 ...
- PAT B1045 快速排序 (25 分)
著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 N 个互不相同的正整数的排列,请问 ...
- visual studio 插件
一:VS10x Code Map(打开后台cs文件,插件列出了所有的字段.方法,方便当代码行多的时候查找,提升工作效率) 1:下载 https://marketplace.visualstudio.c ...
- 一个struts2程序
1.index.jsp 2.struts.xml 3.Loginaction.java package action; import java.io.File; import java.io.File ...
- Ubuntu学习总结-01 安装Ubuntu
Ubuntu(友帮拓.优般图.乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86.amd64(即x64)和ppc架构,由全球 ...
- 20155318 《网络攻防》 Exp7 网络欺诈防范
20155318 <网络攻防> Exp7 网络欺诈防范 基础问题 通常在什么场景下容易受到DNS spoof攻击 DNS spoof攻击即执行DNS欺骗攻击,通过使用Ettercap来进行 ...
- EZ 2018 04 13 NOIP2018 模拟赛(八)
这次的题目都是什么鬼? 玄学乱搞+肉眼看CODE+倒着搜索? 好吧是我ZZ了 链接在此 T1 玄学乱搞 由于考场上写的部分分做法忘记讨论n<=2000时的情况,少得了30pts 很容易得到一个基 ...