BroadCast Receiver的使用
定义
广播接收器分为标准广播和有序广播,标准广播是异步执行的广播,有序广播是同步执行的,同一时刻只有一个广播接收器会收到广播,执行结束后,广播才会继续传递。
静态注册
在Androidmanifest.xml中添加<receiver>节点,并在代码中定义相应的类。在receiver字段里面可以指定priority来指定receiver的优先级,优先级高的会先接收到消息。如果不指定,后注册的receiver先接收到消息
<receiver android:name=".BootCompleteReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver> public class BootCompleteReceiver extends BroadcastReceiver {
//static registered in AndroidManifest.xml
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Boot Complete", Toast.LENGTH_SHORT).show();
}
}
动态注册
可以在代码中注册,这种方法比较灵活,可以自由的注册与注销,但是缺点是必须要程序启动才能收到广播。只需要创建一个BroadcastReceiver的子类并重写父类的onReceive函数就可以了。当有广播到来时,onReceive方法就会被执行。
public class MyReceiver extends BroadcastReceiver {
public static final String ACTION = "com.wanxiang.www.learnbroadcastreceiver.intent.action.myReceiver";
case R.id.btnRegister:
if (myReceiver == null){
myReceiver = new MyReceiver();
registerReceiver(myReceiver, new IntentFilter(MyReceiver.ACTION));
}
break;
case R.id.btnUnRegister:
if (myReceiver != null){
unregisterReceiver(myReceiver);
myReceiver =null;
}
break;
自定义广播
其他都同动态静态注册的broadcastreceiver一样,只是intent-filter写的是自己定义的broadcast,同样在类中也要写发送相应的broadcast(可能在一个button的click中):
Intent intent = new Intent("com.wanxiang.www.broadcastreceiver.MY_BROADCAST");
//标准广播
sendBroadcast(intent);
//有序广播,可以被abortBroadcast()截断
sendOrderedBroadcast(intent,null);
有序广播
发送的有序广播可以在BroadcastReceiver的onReceive函数中被截断:
sendOrderedBroadcast(intent, null);
@Override
public void onReceive(Context context, Intent intent) {
// TODO: This method is called when the BroadcastReceiver is receiving
// an Intent broadcast.
System.out.println("MyReceiver1接受到了消息");
abortBroadcast();
}
本地广播
只让broadcast在应用程序内部进行传递
BroadCast Receiver的使用的更多相关文章
- 第九章:四大组件之Broadcast Receiver
第九章:四大组件之Broadcast Receiver 一.广播的功能和特征 广播的生命周期很短,经过调用对象-->实现onReceive-->结束,整个过程就结束了.从实现的复杂度和 ...
- Android Broadcast Receiver 使用入门
Broadcast Receiver 的使用 1.Broadcast Receiver简介 2.Broadcast Receiver接收系统自带的广播 3.自 ...
- android 四大组件Broadcast Receiver
本文介绍Broadcast Receiver,包括几部分内容:Broadcast Receiver概述及实例.自定义Broadcast Receiver.Broadcast Receiver的实现细节 ...
- 9、四大组件之四-Broadcast Receiver
课程目标: 了解Android消息机制 掌握Broadcast发送消息的两种类型 掌握BroadcastReceiver接收消息的编程 重点难点: sendOrderedBroadcast()的理解 ...
- android的Broadcast receiver
broadcast receiver是用来监听intent的. android大量使用了broadcast receiver,比如:开机.电话打进来.发送消息,手机电量过低 有两种方式注册broadc ...
- Android Broadcast Receiver注册
之前有关 Broadcast Receiver的链 动态注册 1.我们新建一个广播接受类,我们创建一个内部类让他继承BroadcastReceiver,并且重新其中当有广播来到时执行的方法onRece ...
- Android四大组件--Broadcast Receiver具体解释
本文主要讲述了: 一.BroadcastReceiver概述: 二.BroadcastReceiver事件分类 三.BroadcastReceiver事件的编程流程 四.两类BroadcastRece ...
- Android开发学习之路--Broadcast Receiver之初体验
学习了Activity组件后,这里再学习下另一个组件Broadcast Receiver组件.这里学习下自定义的Broadcast Receiver.通过按键自己发送广播,然后自己接收广播.新建MyB ...
- Android笔记(五):广播接收者(Broadcast Receiver)
Android有四大组件,分别为:Activity(活动).Service(服务).Content Provider(内容提供器).Broadcast Receiver(广播接收者). 引入广播的目的 ...
- Android学习笔记八:用Broadcast Receiver跨进程(跨app)通信
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7515194.html 在前面介绍四大组件的时候提到了可以对外部事件进行过滤的Broadcast Receive ...
随机推荐
- Using Call_Form in Oracle D2k
Using Call_Form in Oracle D2k CALL_FORM examples/* Example 1:** Call a form in query-only mode.*/BEG ...
- 调度系统任务创建---创建一个JoinTrigger的依赖任务(五)
有时候我们需要创建一个任务,这个任务有多个下游任务,在所有下游任务执行成功后再触发一个join操作. 这种场景可以使用JoinTrigger的触发器来实现. 该场景对应的拓扑结构如下: 该触发器的详细 ...
- 修改CMD字符编码
1.参考网址: 1.1.http://blog.useasp.net/archive/2012/04/24/how_to_use_UTF8_encoding_in_Windows_CMD.aspx 1 ...
- mybatis入门_配置文件的配置
一.全局配置文件配置 1.1 properties标签 Properties标签可以用来加载配置文件.例如,我们可以将数据库的连接信息放入到一个配置文件(db.properties中..) 下为db. ...
- qt开源社区学习
http://bbs.qter.org/forum.php?mod=forumdisplay&fid=52
- Spring基于注解ehCache缓存整合
注解的使用参照:http://blog.csdn.net/wjacketcn/article/details/50945887 (侵删) ehCache是纯java实现的缓存组件,spring从3.1 ...
- Memcached的使用
为什么要使用Memcached? 1)高并发访问数据库的痛:死锁 2)磁盘IO之痛 3)读写性能完美 4)超简单的集群搭建Cluster 5)开源 6)性能最佳 7)丰富的成功案例 Memcached ...
- HTML5 十大新特性(五)——SVG绘图
相对于canvas绘图,SVG是一种绘制矢量图的技术.全称叫做Scalable Vector Graphics,可缩放的矢量图,在2000年就已经存在,H5把它纳入了标准标签库,并进行了一些瘦身.需要 ...
- VS后台程序无法调用App_Code里的公共类解决方案
在Web应用程序中不能通过右键项目-〉”添加“-〉”添加ASP.NET文件夹“方式添加 .因为Web应用程序中App_Code就不存在 .不过可以通过手动的方式创建,添加一个文件夹命名为App_Cod ...
- 记录centos6.8安装Oracle10.2.0.1过程中的错误解决
[root@hadoop01 database]# ./runInstaller ./runInstaller: /opt/database/install/.oui: /lib/ld-linux.s ...