文章目录

  • 什么是 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(一)相关推荐

  1. Android BroadcastReceiver中播放提示语音有时失效问题

    Android BroadcastReceiver 千万不要做耗时的操作,如果有耗时的操作,请让OnReceive 中调用service. @Override public void onReceiv ...

  2. Android BroadcastReceiver示例教程

    Today we'll discuss and implement Android BroadcastReceiver that is a very important component of An ...

  3. Android BroadcastReceiver总结

    #BroadcastReceiver综述 广播接收器,顾名思义,用来接收广播的. 一个广播关联两个角色,广播发送方.广播接收方,BroadcastReceiver是接收方角色. 广播发送方可以是应用内 ...

  4. Android BroadcastReceiver广播接收android:priority优先级超过1000,达到2147483647时,广播优先级是否生效

    Android BroadcastReceiver广播接收android:priority优先级超过1000,达到2147483647时,广播优先级是否生效 本文作者使用priority=" ...

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

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

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

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

  7. 【转】Android BroadcastReceiver介绍

    本文主要介绍BroadcastReceiver的概念.使用.生命周期.安全性.分类.特殊的BroadcastReceiver(本地.粘性.有序.粘性有序广播). 示例代码见BroadcastRecei ...

  8. Android BroadcastReceiver广播详解

    BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产 ...

  9. Android BroadcastReceiver,广播与进程通讯,APK安装广播,获取已安装列表

    1.创建广播接收器: /*** 作者:created by meixi* 邮箱:13164716840@163.com* 日期:2018/11/1 09*/ public class MyBroadc ...

  10. Android BroadcastReceiver应用

    1. 创建Receiver,两种方式,动态和静态: (1)静态注册: 首先自定义个Receiver, public class MyReceiver extends BroadcastReceiver ...

最新文章

  1. delphi之http通讯
  2. agentzh 的 Nginx 教程(版本 2015.03.19) 第一篇
  3. machine learning学习笔记
  4. 富豪被劫,二十年一遇
  5. postgreSQL源码分析——索引的建立与使用——各种索引类型的管理和操作(1)
  6. 儒林外史每回概括简短10字_冬至祝福语简短10字左右 ,冬至祝福语简短精悍一句话...
  7. dotween路径移动_Unity---DOTween插件学习(3)---获取数据、协程、路径动画
  8. c++求数组中出现频率最高的数
  9. PHP接收云之家审批结果,首页云之家开放平台文档
  10. Cake slicing
  11. amd apu战略_添加内存如何显着提高AMD APU的游戏性能?
  12. 微信爱帮公交查询之公交线路查询
  13. AXURE RP8实战手册 网站和APP原型制作案例精粹
  14. 艾克姆 STC15W4K56S4 IAP15W4K58S4 51开发板 大赛esp8266开发板 STC15W4K56S4
  15. int和Interger区别
  16. 打计算机游戏用英语怎么说,打游戏用英语怎么说
  17. 华为笔记本电脑真香,包邮送一台!
  18. 智能车辆路径跟踪:carsim和simulink联合仿真,基于车速的变权重多点预瞄驾驶员模型个例
  19. STM32 PWM周期与频率的计算
  20. 2022第二届网刃杯网络安全大赛-Web

热门文章

  1. [SCOI2010]连续攻击游戏
  2. 军哥 LNMP 常见问题
  3. .NET方向高级开发人员面试时应该事先考虑的问题
  4. Text-CNN 和 fastText
  5. 面试 AI 算法岗,你被要求复现顶会了嘛?
  6. ACL2020 | 什么时候值得用BERT上下文嵌入
  7. Linux基础—2.Linux中的文件基本命令以及四大远程连接工具XShell、FileZilla、Notepad++、Xmanager4的使用
  8. 西瓜书读书笔记5-决策树的分裂原则
  9. Git简洁教程:本地项目如何与GitHub互连
  10. 【突发】解决remote: Support for password authentication was removed on August 13, 2021. Please use a perso