转自:http://blog.sina.com.cn/s/blog_8417aea801018nm0.html
在Android手机应用程序中开发中,需要用到BroadcastReceiver来监听广播的消息。在自定义好BroadcastReceiver,需要对其进行注册,注册有两种方法,一种是在代码当中注册,注册的方法是registerReceiver(receiver,filter)(用Activity的实例来调用),取消注册的方法:unregisterReceiver(receiver),如果一个BroadcastReceiver用于更新UI(UserInterface),那么通常会使用这种方法进行注册,在Activity启动的时候进行注册,在Activity不可见后取消注册;另一种就是在AndroidManifest当中进行注册。
下面简单的看一下两种注册方式:
第一种:使用代码进行订阅
- IntentFilter
filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); - IncomingSMSReceiver
receiver = new IncomingSMSReceiver(); - registerReceiver(receiver,
filter);
第二种:在AndroidManifest.xml文件中的节点里进行订阅:
- <</SPAN>receiver
android:name=".IncomingSMSReceiver"> -
<</SPAN>intent-filter> -
<</SPAN>action android:name="android.provider.Telephony.SMS_RECEIVED"/> -
</</SPAN>intent-filter> - </</SPAN>receiver>
注册完之后即可以发送广播,使用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()来实现,接收端代码:
- public
class IncomingSMSReceiver extends BroadcastReceiver { -
@Override -
public void onReceive(Context context, Intent intent) { -
//todo...接收广播,做自己的业务 } - }
以上完成了广播的注册、发送和接收处理的过程,其中包含了注册广播的两种方式,接下来讨论一下两种广播注册方式的区别: