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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,包括文章,代码,图片等本站内所有资源,否则保留追究法律责任的权利。