关闭

BroadcastReceiver的使用和两种注册方式之间的区别

377人阅读 评论(0) 收藏 举报

http://blog.csdn.net/xiang_j2ee/article/details/7261147


在Android手机应用程序中开发中,需要用到BroadcastReceiver来监听广播的消息。在自定义好BroadcastReceiver ,需要对其进行注册,注册有两种方法,一种是在代码当中注册,注册的方法是registerReceiver(receiver,filter)(用Activity的实例来调用),取消注册的方法:unregisterReceiver(receiver),如果一个BroadcastReceiver用于更新UI(User Interface),那么通常会使用这种方法进行注册,在Activity启动的时候进行注册,在Activity不可见后取消注册;另一种就是在 AndroidManifest当中进行注册。

 

下面简单的看一下两种注册方式:

第一种:使用代码进行订阅


    IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");  
    IncomingSMSReceiver receiver = new IncomingSMSReceiver();  
    registerReceiver(receiver, filter);  

第二种:在AndroidManifest.xml文件中的<application>节点里进行订阅:

    <receiver android:name=".IncomingSMSReceiver">  
        <intent-filter>  
             <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
        </intent-filter>  
    </receiver>  


注册完之后即可以发送广播,使用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()来实现,接收端代码:

    public class IncomingSMSReceiver extends BroadcastReceiver {  
           @Override  
           public void onReceive(Context context, Intent intent) {  
                  //todo...接收广播,做自己的业务   }  
    }  
 

以上完成了广播的注册、发送和接收处理的过程,其中包含了注册广播的两种方式,接下来讨论一下两种广播注册方式的区别:

        区别:

        在AndroidManifest中进行注册后,不管改应用程序是否处于活动状态,都会进行监听,比如某个程序时监听 内存 的使用情况的,当在手机上安装好后,不管改应用程序是处于什么状态,都会执行改监听方法中的内容。

        在代码中进行注册后,当应用程序关闭后,就不再进行监听。我们读知道,应用程序是否省电,决定了该应用程序的受欢迎程度,所以,对于那些没必要在程序关闭后仍然进行监听的Receiver,在代码中进行注册,无疑是一个明智的选择。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:282226次
    • 积分:3403
    • 等级:
    • 排名:第9821名
    • 原创:7篇
    • 转载:430篇
    • 译文:0篇
    • 评论:10条
    文章分类
    最新评论