BroadcastReceiver(广播接收器)

190 阅读1分钟

「这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战

1.定义:

广播即是一个全局监听器,属于Android

Android 广播分为两个角色:广播发送者、广播接收者 2.作用:

监听并接受应用APP发出的广播消息,并作出响应

3.应用场景:

Android不同组件间的通信(含应用内/不同应用之间)

多线程通信

与安卓系统在特殊情况下的通信

如:电话呼入时,网络可用时

4.模型:

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

00001. 1.消息订阅者(广播接收者)

00002. 2.消息发布者(广播发布者)

00003. 3.消息中心(AMS,即Activity Manager Service) 5.静态注册: 1:新建一个类,继承BroadcastReceiver 2:在清单配置文件中动态注册

activity代码:image.png

BroadcastReceiver:image.png

结果有"静态"弹出:image.png

6.动态注册

首先创建一个MyReceiver并继承BroadcastReceiver,既然要动态注册该receiver的话,就无需在AndroidManifest.xml中配置了.

代码:

MyReceiver:image.png

MainActivity:image.png

布局:image.png

7. 粘性广播: sendStickyBroadcast()

字面意思是发送粘性的广播,使用这个api需要权限android.Manifest.permission.BROADCAST_STICKY,粘性广播的特点是Intent会一直保留到广播事件结束,而这种广播也没有所谓的10秒限制,10秒限制是指普通的广播如果onReceive方法执行时间太长,超过10秒的时候系统会将这个广播置为可以干掉的candidate,一旦系统资源不够的时候,就会干掉这个广播而让它不执行。