Broadcast Receiver

    Broadcast receiver和activity、service组件一样都是接收intent的组件。一收到匹配的broadcast intent,broadcast receiver的onReceive(Context,Intent)方法立即运行,然后broadcast receiver就会被销毁;onReceive方法同样运行在主线程上,所以不能在此方法中进行耗时的重度任务,如网络连接或者数据的永久存储等。

    作为Android四大组件之一,Broadcast receiver同样需要在系统中登记才能使用。登记有两种方式:在manifest配置文件中登记  使用registerReceiverunregisterReceiver方法。


一、在manifest配置文件中登记

    假如你的应用需要开机自启动,那么你就需要一个能监听BOOT_COMPLETED操作的broadcast intent的broadcast receiver。首先创建一个StartupReceiver新类:

public class StartupReceiver extends BroadcastReceiver {private static final String TAG = "StartupReceiver";@Overridepublic void onReceive(Context context, Intent intent) {// 对intent消息进行处理}}


然后再往manifest配置文件中加入登记代码并包含相应的intent-filter:

                                                                 
然后再添上可以接收BOOT_COMPLETED广播的权限就大功告成了:

 


二、动态Broadcast receiver

      通过Context.registerReceiver和Context.unregisterReceiver,动态的将触发器组件与所需要监听的事件进行绑定。通常会在Activity.onResume中进行触发器组件的注册,而在Activity.onPause中注销对应的触发组件。


广播事件的发送


一、无序广播

     通过Context.sendBroadcast方法进行发送。所有注册了该广播事件的触发器组件都会获得事件通知,并不会按一定的顺序运行。


二、有序广播

     通过Context.sendOrderedBroadcast方法进行发送。明显所有监听该事件的触发器组件,都会按照相应的优先级排序,从高到低依次处理该事件,下面是一个优先级最低的触发器组件的注册代码:

                                                
      同时,优先级高的broadcast receiver可以通过BroadcastReceiver.setResultCode(Activity.RESULT_CANCELED)来终止这个广播事件的传播,这样优先级低的broadcast receiver就不会在有机会处理该事件了。





更多相关文章

  1. Android(安卓)之 事件
  2. Android(安卓)按键流程分析笔记
  3. Android中onInterceptTouchEvent与onTouchEvent
  4. Android中RatingBar的自定义总结
  5. ListView.setOnItemClickListener、setOnCreateContextMenuListe
  6. Android架构组件WorkManager详解
  7. android onTouchEvent和setOnTouchListener中onTouch的区别
  8. Android(java)学习笔记94:关于广播接收者的注册和使用心得
  9. Android中使用WebView, WebChromeClient和WebViewClient加载网页

随机推荐

  1. 详解广播机制(借鉴郭霖老师著作)
  2. 【Android基础笔记22】BroadcastReceiver
  3. Android(安卓)PocketSphinx离线语音识别
  4. Android(安卓)TTS(Text To Speech)
  5. 关于android app相关破解技术
  6. TextView的属性详解
  7. Android的App Widget实现
  8. 总结Android(安卓)Socket开发中可能遇到
  9. android 遮罩层效果
  10. Android(安卓)9.1 定制开机向导