1.静态注册。

在manifest中注册。

 <receiver android:name="com.exce.learnbroadcastreceiver.MyReceiver"></receiver>

然后在activity中使用sendBroadcast(Intent)方法。其中参数是Intent.

 Intent intent=new Intent(this,MyReceiver.class);
intent.putExtra("data", "exer"); //携带数据
sendBroadcast(intent);

2.动态注册。

不需要在manifest中注册。

在代码中使用registerReceiver()和unregisterReceiver()进行广播的注册和取消注册。

registerReceiver(BroadcastReceiver receiver, IntentFilter filter),第一个参数是receiver,第二个参数是intentfilter。

unregisterReceiver(BroadcastReceiver receiver),参数是receiver。

代码:

 private MyReceiver receiver;
...
 case R.id.regBroadCast:
if (receiver==null) {
receiver=new MyReceiver();
registerReceiver(receiver, new IntentFilter(MyReceiver.ACTION));
}
break;
case R.id.unRegBroadCast:
if (receiver!=null) {
unregisterReceiver(receiver);
receiver=null;
}

MyReceiver:

 public static final String ACTION="com.exec.learnbroadcastreceiver.intent.action";

通过常量ACTION,new IntentFilter(MyReceiver.ACTION)获得intentFilter。然后就可以注册广播。

动态注册的广播,一定要在销毁的时候进行取消注册。即registerReceiver()和unregisterReceiver()必须同时出现。

3.Broadcast的优先级

BroadcastReceiver的优先级可以通过manifest中的intent-filter的android:priority=""属性。android:priority="9"需要填写一个数字,数字越大,优先级越高。

实现有序广播,可以使用sendOrderedBroadcast(Intent intent, String receiverPermission)方法,然后配合android:priority=""属性,进行有序广播

同时想要截断广播的话,在继承BroadcastReceiver的MyReceiver的onReceive()方法中使用abortBroadcast()方法,就可以截断广播。

Android开发之BroadcastReceiver的使用的更多相关文章

  1. Android开发之BroadcastReceiver

    BroadcastReceiver:广播接收者.用来接收系统或应用中的广播. 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能: ...

  2. Android开发之旅5:应用程序基础及组件

    引言 上篇Android开发之旅:应用程序基础及组件介绍了应用程序的基础知识及Android的四个组件,本篇将介绍如何激活组关闭组件等.本文的主题如下: 1.激活组件:意图(Intents) 1.1. ...

  3. Android开发之旅4:应用程序基础及组件

    引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西.本篇的主题如下: 1.应用程序基础 2.应用 ...

  4. Android开发之Java集合类性能分析

    对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List.Set和 Map这三大类的集合,今天Android吧(ard8. ...

  5. Android开发之InstanceState详解

    Android开发之InstanceState详解   本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...

  6. Android开发之Git配置

    Android开发之Git配置 1.首先git配置: 输入命令: git config --global user.name "xxx.xx" git config --globa ...

  7. 【Android UI】Android开发之View的几种布局方式及实践

    引言 通过前面两篇: Android 开发之旅:又见Hello World! Android 开发之旅:深入分析布局文件&又是“Hello World!” 我们对Android应用程序运行原理 ...

  8. Android开发之旅: Intents和Intent Filters(理论部分)

    引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

  9. Android开发之ViewPager+ActionBar+Fragment实现响应式可滑动Tab

     今天我们要实现的这个效果呢,在Android的应用中十分地常见,我们可以看到下面两张图,无论是系统内置的联系人应用,还是AnyView的阅读器应用,我们总能找到这样的影子,当我们滑动屏幕时,Tab可 ...

随机推荐

  1. Mysql 的变量

    变量 MySQL是一门编程语言.所以存在变量.流程控制.函数.存储过程.触发器 MySQL分系统变量,与自定义变量 MySQL的某些功能是通过系统变量来实现的.例如:autocommit 查看系统变量 ...

  2. tomcat服务器启动错误

    有的时候,启动tomcat,显示的他已经启动了,但是就是没有加载任何工程,最后页面报404错误. 这时候,可以试着把服务器Clean一下

  3. Windows10中的IIS10安装php manager和IIS URL Rewrite 2.0组件的方法

    Windows10中自带的Server:Microsoft-IIS/10.0,然后这个10却让原本支持组件无法安装了,php manager组件安装时提示“必须安装IIS7以上才可以安装”.那是不是真 ...

  4. 【JSP&Servlet学习笔记】4.会话管理

    Http本身是无状态通信协议,要进行会话管理的基本原理,就是将需要维护的状态回应给浏览器,由浏览器在下次请求时主动发送状态信息,让Web应用程序“得知”请求之间的关联. 隐藏字段是将状态信息以窗体中看 ...

  5. Interface的多层继承

    我有一段如下代码,定义一个接口iInterface,cBase实现iInterface,cChild继承cBase,UML为 预期是想要cBase.F()的执行逻辑,同时需要cChild的返回值,所以 ...

  6. [转]利用/*+Ordered*/提高查询性能

    [转]利用/*+Ordered*/提高查询性能 2009-02-06 10:46:27|  分类: Oracle |  标签: |字号大中小 订阅  消耗在准备利用Oracle执行计划机制提高查询性能 ...

  7. 一步步学习NHibernate(5)——多对一,一对多,懒加载(2)

    请注明转载地址:http://www.cnblogs.com/arhat 通过上一章的学习,我们建立了Student和Clazz之间的关联属性,并从Student(many)的一方查看了Clazz的信 ...

  8. 视图--bai

    /*视图的必要性 create view population_all_view as select xxxx 详细信息 from qgck where rownum<500 -- sql语句不 ...

  9. 用python实现k近邻算法

    用python写程序真的好舒服. code: import numpy as np def read_data(filename): '''读取文本数据,格式:特征1 特征2 -- 类别''' f=o ...

  10. protues仿真 51点亮点阵

    电路图 程序 /*============================== 点亮点阵心形 ================================*/ #include <REGX5 ...