BroadcastReceiver为用户接受广播通知的组件,当系统或某个应用程序发送广播时,可以使用BroadcastReceiver组件来接收广播消息并做相应处理。

在信息发送时,需要将信息封装后添加到一个Intent对象中,然后通过调用Context.sendBroadcaset()、sendOrderedBroadcast()或sendStickyBroadcast()方法将Intent对象广播出去,然后接收者会检查注册的IntentFilter是否与接收到的Intent相同,当相同时便会调用onReceive()方法来接受消息。

三个发送方法的不同之处是使用sendBroadcast()或者sendStickyBroadcast()方法发送广播时,所有满足条件的接收者会随机地执行,而使用sendOrderedBroadcast()方法发送的广播接收者会根据IntentFilter中设置的优先级顺序来执行。

BroadcastReceiver的使用过程如下。

1)需要将广播的消息封装到Intent中。

2)然后通过三种发送方法中的一种将Intent广播出去。

3)通过IntentFilter对象来过滤所发送的实体Intent。

4)实现一个重写了onReceive方法的BroadcastReceiver。

需要注意的是,注册BroadcastReceiver对象的方法有两种,一种是在AndroidManifest.xml中声明,另一种是在Java代码中设置。

在AndroidManifest.xml中声明时,将注册的信息包裹在<receive></receive>标签中,并通过<intent-filter>标签来设置过滤条件。

在Java代码中设置时,需要先创建Context.registerReceiver方法来注册监听,然后通过Context.unregisterReceiver方法来取消监听,此种注册方法的缺点是当Context对象被销毁时,该BroadcastReceiver也就随之被摧毁了。

作者:银月莲
出处:http://www.cnblogs.com/moonsilvering
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,包括文章,代码,图片等本站内所有资源,否则保留追究法律责任的权利。

posted on 2011-12-26 22:45  银月莲  阅读(231)  评论(0编辑  收藏  举报