BroadcastReceiver是Android系统的四大组件之一,本质是一种全局的监听器,用于接收系统全局的广播消息。真因为如此,BroadcastReceiver可以很方便的是实现系统中不同组件之间的通讯。

一、创建BroadcastReceiver

  创建一个BroadcastReceiver很简单,只需创建一个BroadcastReceiver的子类即可:

public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//如果onReceive内的操作10s内没有执行完成,Android会认为该进程无响应,所以不要再此作耗时操作
}

  

二、两种指定Receiver匹配的Intent的方式

  第一种:在AndroidManifest.xml文件中配置,如下:

<receiver android:name="com.codingblock.receiver.MyReceiver">
<intent-filter>
<action android:name="com.codingblock.receiver.action.MyReceiver"/>
</intent-filter>
</receiver> 

  第二种:在代码中动态注册,如下:

MyReceiver receiver = new MyReceiver();
registerReceiver(receiver, new IntentFilter("com.codingblock.receive.intent.action.MyReceiver")); 

 

三、启动一个BroadcastReceiver

  BroadcastReceiver用于接收程序(包括用户开发的程序和程序内建的系统)所发出的Broadcast Intent,启动一个BroadcastReceiver只需两步:

  第一步:创建一个需要启动BroadcastReceiver的Intent。

  第二步:调用Context的sendBroadcast()方法或sendOrderedBroadcast()方法来启动Intent;

  当一个Broadcast Intent被发出后,所有匹配该Intent的Receiver都有可能被启动。 

  当然,对Receiver不同的注册方式,需要用不同的方式去启动,两种注册方式对应的启动方法如下:

  在AndroidManifest.xml中配置的Receiver(2中第一种方法),启动方式如下:

Intent intent = new Intent(MainActivity.this, MyReceiver.class);
sendBroadcast(intent);

  在代码中动态注册的Receiver(2中第二种方法),启动如下:

Intent intent = new Intent("com.codingblock.receive.intent.action.MyReceiver");
sendBroadcast(intent);

    

Android学习笔记(十)BroadcastReceiver初体验的更多相关文章

  1. Android学习笔记--Broadcast, BroadcastReceiver(广播)

    参考资料:http://www.cnblogs.com/playing/archive/2011/03/23/1992030.html 在 Android 中使用 Activity, Service, ...

  2. android学习笔记十——TabHost

    TabHost——标签页 ==> TabHost,可以在窗口放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组件摆放区域. 通过此种方式可以实现在一个容器放置更多组件(EG:通话记 ...

  3. Android学习笔记十:异步处理

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7520700.html 一:基础概念 UI线程:当Android程序第一次启动时,Android会同时启动一条主 ...

  4. 云中沙箱学习笔记2-ECS之初体验

    1.1 背景知识 云服务器(Elastic Compute Service, 简称ECS),是一种简单高效,处理能力可以弹性伸缩的计算服务.ECS的相关术语说明如下: --实例(Instance):是 ...

  5. 【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.sina.com.cn/flowingflying或作者@恺风Wei-傻瓜与非傻瓜 广播接 ...

  6. 【转】Pro Android学习笔记(三十):Menu(1):了解Menu

    目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...

  7. 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner

    目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...

  8. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  9. 【转】Pro Android学习笔记(十二):了解Intent(下)

    解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键 ...

  10. 【转】 Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常

    目录(?)[-] SOAP JSON和XMLPullParser Exception处理 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog. ...

随机推荐

  1. 动态规划&矩阵连乘

    动态规划&矩阵连乘 动态规划的概念 •     与分治方法类似       分-治-合 • 与分治方法不同       子问题之间并非相互独立 •     基本思想        用一个表记录 ...

  2. React新接触

    html5页面的开始引入: <script src="../build/react.js"></script>   <!--核心库--> < ...

  3. 一分钟搭建Webpack+react+es6框架

    最近react刷屏的厉害,而随着它一起走进我们视野的还有webpack,webpack只是个工具,为什么如此火呢?因为简单好了不废话.   直接进入正题: 打开命令行工具: npm install - ...

  4. 新浪微博登录接口(PHP版)

    CI框架下 新浪微博登录接口完整版说明:本贴只适合CI框架.功能实现:登录接口跳转链接成功,获取用户信息(包括最重要的u_id)成功,将用户与本地平台连接起来,用户登录成功后信息的存储,本地数据库第三 ...

  5. ubuntu apt-get

    近期重新拿起linux的书看了下,整理了一下linux的命令. ubuntu预装了APT和dpkg ,“APT”是 “Advanced Package Tool”的简写,“dpkg ”是“Debian ...

  6. Python之路----数据类型

    Python的集成开发环境(IDE):pycharm 数据类型 数字 整数int(integer) 浮点数float 布尔型,只有两个值 真:True 假:False 字符串 列表 元组 字典 一.字 ...

  7. 重构技巧 引入Null对象

    描述:有两个类,学生类和导师类,学生的导师类可能不存在,因此在获取学生导师名字等信息时都要先判断导师名字是否为空.重构后通过一个空导师类来处理导师为空的相应逻辑. Before # introduce ...

  8. hdu 1800 Flying to the Mars

    Flying to the Mars 题意:找出题给的最少的递增序列(严格递增)的个数,其中序列中每个数字不多于30位:序列长度不长于3000: input: 4 (n) 10 20 30 04 ou ...

  9. C语言-05内存剖析

    1.进制 1. 二进制 1>     特点:只有0和1,逢2进1 2>     书写格式:0b或者0b开头 3>     使用场合:二进制指令\二进制文件,变量在内存中就是二进制存储 ...

  10. after I see Little Dorrit

    也许是我太追名逐利,所以我不肯承认自己花费了大把的时间看电影,通过写博客好像自己从中感悟到了什么,好像看电影也是一种学习的方式. 也许是我平静自内心的方式,我太忙于玩或者学习,甚至没有机会非常沉静 一 ...