Android BroadcastReceiver(一)
文章目录
- 什么是 BroadcastReceiver?
- BroadcastReceiver的意义?
- 发送广播信息的两种方式
什么是 BroadcastReceiver?
BroadcastReceiver 作为 Android 四大基础组件之一,可以方便地实现不同基础组件、不同应用程序进程之间的通信,它可以监听全局的广播信息,这些广播信息可以由开发者自行开发的程序发出,也可以由 Android 系统程序发出,BroadcastReceiver 可以监听并接收这些广播信息。
BroadcastReceiver的意义?
再举个场景使用的案例:当在 Activity 中启动 Service 后,Activity 和 Service 在运行过程往往需要进行数据传递,例如由 Activity 控制 Service 中的音乐播放器是否播放、Service 定时向 Activity 传递数据的下载情况以便 Activity 更新 UI界面等,此时,通过 BroadcastReceiver 可以比较方便地实现不同基础组件之间的数据传递工作。
【发送广播信息】
发送广播信息的两种方式
- 第一种为:发送普通广播
- 意思:所有接受者都可以同时接收到这个广播信息,但不能修改广播信息。
Intent intent = new Intent();intent.setAction("ccv.turbosnail.broadcastdemo"); //接收方匹配 Action 才能接收广播intent.putExtra("data","普通广播信息");sendBroadcast(intent); // 发送 普通 广播
- 第二种为:发送有序广播
- 意思:优先级高的广播接受者最先接收,低优先级的后接收,优先级高的广播接受者可以控制广播停止传播,也可以修改广播传递消息的内容
Intent intent = new Intent();intent.setAction("ccv.turbosnail.broadcastdemo"); //接收方匹配 Action 才能接收广播intent.putExtra("data","普通广播信息");sendOrderedBroadcast(intent,null); // 发送 有序 广播
【接收广播信息】
1.
广播接收器 BroadcastReceiver 对象用来监听和接收广播信息,接收到相应广播后,会自动回调 onReceive() 方法,因此,接收广播信息后的处理、与其它组件的交互操作一般都可以放在 onReceive() 方法中。
@Overridepublic class MyReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {String data = intent.getStringExtra("data");Toast.makeText(ReceiverActivity.this,data,Toast.LENGTH_LONG).show();}}
修改获取到的值的方法:
Bundle bundle = new Bundle();
bundle.putString("data",data + "追加的数据");
setResultExtras(bundle);
注册广播接收器(两种方式):
方式一:
可以在AndroidManifest.xml 里通过<receive> 标签注册自定义的广播接收器<receiver android:name=".ReceiverActivity$MyReceiver"><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></intent-filter></receiver>
对于有序的广播来说,需要在标签中添加优先级属性说明,优先级的取值范围在[-1000,1000],数值越大,优先级越高。具体写法如下:
<intent-filter android:priority="900"></intent-filter>
方式二:
MyReceiver myReceiver = new MyReceiver();IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("ccv.turbosnail.broadcastdemo");registerReceiver(myReceiver,intentFilter);
通过java代码来注册,但是要注意!在使用完成后记得取消注册!代码如下:
unregisterReceiver(myReceiver);
一般情况下,建议在 onResume() 方法中注册广播接收器,在 onPause() 方法中取消注册
Android BroadcastReceiver(一)相关推荐
- Android BroadcastReceiver中播放提示语音有时失效问题
Android BroadcastReceiver 千万不要做耗时的操作,如果有耗时的操作,请让OnReceive 中调用service. @Override public void onReceiv ...
- Android BroadcastReceiver示例教程
Today we'll discuss and implement Android BroadcastReceiver that is a very important component of An ...
- Android BroadcastReceiver总结
#BroadcastReceiver综述 广播接收器,顾名思义,用来接收广播的. 一个广播关联两个角色,广播发送方.广播接收方,BroadcastReceiver是接收方角色. 广播发送方可以是应用内 ...
- Android BroadcastReceiver广播接收android:priority优先级超过1000,达到2147483647时,广播优先级是否生效
Android BroadcastReceiver广播接收android:priority优先级超过1000,达到2147483647时,广播优先级是否生效 本文作者使用priority=" ...
- android系统休眠发广播,Android - BroadcastReceiver
BroadcastReceiver BroadcastReceiver,广播接收者,用来接收系统和应用的广播,并做出相应的处理,如电量过低时提示用户充电等: BroadcastReceiver 是 A ...
- android广播过滤器.*,android – BroadcastReceiver与多个过滤器或多个BroadcastReceivers?...
我有一个Android Activity需要捕获两个不同的广播.我目前的方法是在活动中有一个单一的BroadcastReceiver,并抓住它的广播: public class MyActivity ...
- 【转】Android BroadcastReceiver介绍
本文主要介绍BroadcastReceiver的概念.使用.生命周期.安全性.分类.特殊的BroadcastReceiver(本地.粘性.有序.粘性有序广播). 示例代码见BroadcastRecei ...
- Android BroadcastReceiver广播详解
BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产 ...
- Android BroadcastReceiver,广播与进程通讯,APK安装广播,获取已安装列表
1.创建广播接收器: /*** 作者:created by meixi* 邮箱:13164716840@163.com* 日期:2018/11/1 09*/ public class MyBroadc ...
- Android BroadcastReceiver应用
1. 创建Receiver,两种方式,动态和静态: (1)静态注册: 首先自定义个Receiver, public class MyReceiver extends BroadcastReceiver ...
最新文章
- delphi之http通讯
- agentzh 的 Nginx 教程(版本 2015.03.19) 第一篇
- machine learning学习笔记
- 富豪被劫,二十年一遇
- postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)
- 儒林外史每回概括简短10字_冬至祝福语简短10字左右 ,冬至祝福语简短精悍一句话...
- dotween路径移动_Unity---DOTween插件学习(3)---获取数据、协程、路径动画
- c++求数组中出现频率最高的数
- PHP接收云之家审批结果,首页云之家开放平台文档
- Cake slicing
- amd apu战略_添加内存如何显着提高AMD APU的游戏性能?
- 微信爱帮公交查询之公交线路查询
- AXURE RP8实战手册 网站和APP原型制作案例精粹
- 艾克姆 STC15W4K56S4 IAP15W4K58S4 51开发板 大赛esp8266开发板 STC15W4K56S4
- int和Interger区别
- 打计算机游戏用英语怎么说,打游戏用英语怎么说
- 华为笔记本电脑真香,包邮送一台!
- 智能车辆路径跟踪:carsim和simulink联合仿真,基于车速的变权重多点预瞄驾驶员模型个例
- STM32 PWM周期与频率的计算
- 2022第二届网刃杯网络安全大赛-Web
热门文章
- [SCOI2010]连续攻击游戏
- 军哥 LNMP 常见问题
- .NET方向高级开发人员面试时应该事先考虑的问题
- Text-CNN 和 fastText
- 面试 AI 算法岗,你被要求复现顶会了嘛?
- ACL2020 | 什么时候值得用BERT上下文嵌入
- Linux基础—2.Linux中的文件基本命令以及四大远程连接工具XShell、FileZilla、Notepad++、Xmanager4的使用
- 西瓜书读书笔记5-决策树的分裂原则
- Git简洁教程:本地项目如何与GitHub互连
- 【突发】解决remote: Support for password authentication was removed on August 13, 2021. Please use a perso