您的位置:华清远见教育科技集团 >> Android资料 >> Android Broadcast Receivers的使用  
 
Android Broadcast Receivers的使用
分享到:

Android应用组件主要由Activity、Service、Broadcast Receivers、Intent、Content Providers、AndroidManifest等构成。其中Activity是与用户直接交互UI组件;Service是运行在后台、用户不可见的服务组件,今天给大家介绍的Broadcast Receivers 则是进行系统消息广播的广播组件。

广播接收器(Broadcast Receivers)是用来接收或者响应广播、通告的一个应用组件,它与通知管理器密切相关。当时区发生改变、电量不足、工作语言发生改变等事件发生时,注册相应广播接收器的应用将会收到这些信息。

所有的广播接收器都需要基于android.content.BroadcastReceiver基类。通过Context.registerReceiver()方法,开发者可以动态地注册广播接收器。

定义接收的广播的方式如下:
    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_TIME_CHANGED);
    filter.addAction(Intent.ACTION_DATE_CHANGED);
    filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
    registerReceiver(mIntentReceiver, filter);

广播接收器的实现如下:
    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context, Intent intent)
        {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_TIME_CHANGED)
              || action.equals(Intent.ACTION_DATE_CHANGED)
              || action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
              ……
            }
        }
    };

在调用组件被销毁时,必须销毁广播接收器,其方法如下:

protected void onPause()
    {
        super.onPause();
        unregisterReceiver(mIntentReceiver);
    }

当然在AndroidManifest.xml文件中,也可以定义相应的广播接收器。其方法如下:

< receiver android:name="com.android.camera.CameraButtonIntentReceiver">
        < intent-filter>
            < action android:name="android.intent.action.CAMERA_BUTTON"/>
        < /intent-filter>
    < /receiver>

在目前的实现中,广播分为两种类型:标准广播(Normal broadcasts)、顺序广播(Ordered broadcasts)。

标准广播指广播是完全异步的,所有的接收器处于无序的运行状态。这类广播通过Context.sendBroadcast()方法发送。

顺序广播则按照一定的优先级进行广播,高优先级的接收器向低优先级的接收器转播广播。如果需要,高优先级的接收器也可以抛弃广播,从而切断低优先级的接收器收到广播的可能,在同一优先级的接收器,收到广播的顺序则是随机的。顺序广播通过Context.sendOrderedBroadcast()方法发送。

 更多相关文章

·详解Android Service组件
·Android应用组件Activity
·Android RPC管道文件系统
·Android RPC远程调用
·SMSM状态通信处理过程