,,Android四大组件之BroadcastReceiver详解

,,Android四大组件之BroadcastReceiver详解

今天,边肖将与您分享关于Android四个组成部分的广播接收器的详细说明。边肖觉得内容挺好的,现在分享给大家,很有参考价值。有需要的朋友就跟着边肖去看看吧。

BroadcastReceiver,在Android的开发中,BroadcastReceiver有很多应用场景,属于Android的四大组件之一。

Android广播分为两个角色:广播发送方和广播接收方。

一、 作用

用于监控/接收应用程序发送的广播消息并做出响应。

应用场景:

不同组件之间的通信(包括不同应用程序内部/之间)

在特定情况下与Android系统通信(例如,当有电话打进来或网络可用时)

多线程通信

二、实现原理

Android中的广播使用了设计模式中的观察者模式:基于消息的发布/订阅事件模型。

模型中有3个角色:

消息订户(广播接收器)

消息发布者(广播发布者)

消息中心(AMS,活动管理器服务)

广播接收机通过绑定机制在AMS中注册。

发送方通过绑定机制向AMS发送广播。

根据AMS广播发送方的要求,在注册列表中找到合适的广播接收方(搜索依据:IntentFilter/Permission)。

AMS广播被发送到相应的广播接收机的相应消息循环队列;

广播接收方通过消息循环获得该广播,并在Receive()上回调。

三、广播接收器注册

注册有两种方式:静态注册和动态注册。

静态注册

通过AndroidManifest.xml中的标记来声明它

听筒

//此广播接收器类是mBroadcastReceiver

android:name='。' mBroadcastReceiver '

//用于在网络状态改变时接收广播。

意图过滤器

action Android:name=' Android . net . conn . connectivity _ CHANGE '/

/意图-过滤器

/接收器

这个App第一次启动时,系统会自动实例化mBroadcastReceiver类,并在系统中注册。

静态注册是常驻广播,不受任何组件生命周期的影响。

动态注册

在代码中,通过调用Context的*registerReceiver()方法动态注册BroadcastReceiver。

@覆盖

受保护的void onResume() {

super . on resume();

//实例化BroadcastReceiver的IntentFilter子类

mBroadcastReceiver mBroadcastReceiver=new mBroadcastReceiver();

intent filter intent filter=new intent filter();

//设置接收广播的类型

intent filter . addaction(Android . net . conn . connectivity _ CHANGE);

//调用Context的registerReceiver()方法进行动态注册。

register receiver(mBroadcastReceiver,intent filter);

}

广播注册后,记得在相应位置销毁广播。

也就是说,在onPause()中注销receiver (mbroadcastreceiver)

当此活动被实例化时,MyBroadcastReceiver将在系统中动态注册。

当此活动被销毁时,动态注册的MyBroadcastReceiver将不再接收相应的广播。

@覆盖

受保护的void onPause() {

super . on pause();

//销毁onResume()方法中的广播

unregister receiver(mBroadcastReceiver);

}

注意:

动态广播最好在活动的onResume()中注册,并在onPause()中注销。

原因:

对于动态广播,有注册就要有注销,否则会导致内存泄露。

不允许重复注册和重复注销。

动态注册是非驻留广播,具有灵活性,跟随组件的生命周期变化。

总结

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • android调用webview方法,androidwebview是什么,Android 中 WebView 的基本用法详解
  • android传感器高级编程,Android传感器,Android编程之光线传感器用法详解
  • android.app.Dialog,android自定义dialog对话框,Android开发笔记之-Dialog的使用详解
  • android 图片视频轮播框架,androidlayout轮播图,Android实现炫酷轮播图效果
  • android里的viewpager,安卓自定义view流程,Android自定义引导玩转ViewPager的方法详解
  • android里的viewpager,android viewpager详解
  • android里的viewpager,android viewpager详解,Android自定义超级炫酷的ViewPage指示器
  • android调用webview方法,androidwebview是什么
  • android设置控件宽度,android获取屏幕宽度和高度
  • android设置控件宽度,android获取屏幕宽度和高度,Android中获取控件宽高的4种方法集合
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程
  • android蓝牙开发的基本流程,安卓蓝牙app开发教程,android蓝牙简单开发示例教程
  • android菜单栏,android菜单控件
  • 留言与评论(共有 条评论)
       
    验证码: