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

转载 2012年03月21日 16:58:12

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,在代码中进行注册,无疑是一个明智的选择。



UITableView的两种重用Cell方法的区别

UITableView中有两种重用Cell的方法: Ios代码   - (id)dequeueReusableCellWithIdentifier:(NSString *)id...
  • longzs
  • longzs
  • 2016年05月10日 16:25
  • 2811

Spring中依赖注入的两种方式的区别

1:Spring中依赖注入的两种方式:  (1):通过 setter 方法注入:                 其中,name属性的取值依setter方法名而定,要求这个类里面这...
  • StarskyBoy
  • StarskyBoy
  • 2016年08月22日 11:44
  • 2543

Android中两种Service区别

服务是运行在后台的一段代码。它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下文(context)里面,这取决于自身的需要。其它的组件可以绑定到一个服务(Service)上面,通过远程过程调...
  • leewokan
  • leewokan
  • 2016年05月06日 10:45
  • 1552

Android中Broadcastreceiver两种注册方式

  • 2015年08月11日 22:31
  • 2.75MB
  • 下载

[Android面试题-8] BroadCastReceiver的两种注册方式的异同

在Android手机应用程序中开发中,需要用到BroadcastReceiver来监听广播的消息。在自定义好BroadcastReceiver ,需要对其进行注册,注册有两种方法,一种是在代码当中注册...
  • shishengshi
  • shishengshi
  • 2013年09月03日 20:21
  • 1886

Android中BroadcastReceiver的两种注册方式(静态和动态)详解

今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式。 BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中...
  • panhouye
  • panhouye
  • 2016年12月12日 21:37
  • 2464

android广播的两种注册方式以及区别

  • 2015年10月28日 11:07
  • 2.32MB
  • 下载

BroadcastReceiver的两种注册方式(静态注册和动态注册)(转)

静态注册就是在AndroidManifest.xml文件中定义,注册的广播接收器必须继承BroadReceiver 动态注册就是在程序中使用Context.registerReceiver注册。 ...
  • Song_74110
  • Song_74110
  • 2016年07月08日 10:53
  • 122

BroadcastReceiver的两种注册方式(静态注册和动态注册)

静态注册就是在AndroidManifest.xml文件中定义,注册的广播接收器必须继承BroadReceiver 动态注册就是在程序中使用Context.registerReceiver注册。...
  • u010963948
  • u010963948
  • 2015年03月17日 19:28
  • 493

android广播的两种注册方式以及区别

一、BroadCastReceiver两种注册方式:动态注册和静态注册 动态注册,即在代码中注册,如下: receiver2 = new Receiver2(); registerReceiv...
  • u011484134
  • u011484134
  • 2015年10月28日 10:42
  • 480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BroadcastReceiver的使用和两种注册方式之间的区别
举报原因:
原因补充:

(最多只允许输入30个字)