四大组件-Broadcast Receiver

1.四大组件之Activity

2.四大组件之Service

3.四大组件之ContentProvider

4.四大组件之Broadcast Receiver

1.为啥需要它?

BroadcastReceiver 是 Android 的四大组件之一。用于监听和接收广播消息,并做出响应

有以下一些应用:

  • 不同组件之间的通信(应用内或不同应用之间)。
  • 多线程之间通信。
  • 与系统在特定情况下(例如,电话呼入时、网络可用时)的通信。

2.怎样使用它?

  • 静态注册
public class CustomBroadcastReceiver extends BroadcastReceiver {    
    @Override    
    public void onReceive(Context context, Intent intent){
        Log.e("androidLog","onReceiver()");    
    }
}

AndroidManifest.xml

<receiver android:name=".CustomBroadcastReceiver">    
    <intent-filter>        
        <action android:name="com.hyh.broadcastreceiver"/>    
    </intent-filter>
</receiver>
  • 动态注册
IntentFilter filter = new IntentFilter();
filter.addAction("com.hyh.broadcastreceiver");
registerReceiver(new CustomBroadcastReceiver(),filter);
  • 发送广播
Intent intent = new Intent("com.hyh.broadcastreceiver");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {     
    //8.0以后必须指定,不然静态注册接收不到广播     
    intent.setComponent(
        new ComponentName(this,"hyh.com.broastcastdemo.CustomBroadcastReceiver"));
}
sendBroadcast(intent);
  • 程序内发送广播
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

3.它的原理是什么?

Android 中的广播机制使用了观察者设计模式:基于消息的发布、订阅事件模型。因此,广播的发送者和接收者解耦,使得系统方便集成,更容易扩展。

模型中有三个角色:

  • 消息订阅者(广播接收者)
  • 消息发布者(广播发送者)
  • 消息中心(ActivityManagerService

整个模型过程如下:

  1. 广播接收者通过 Binder 机制在 AMS 中注册订阅广播。
  2. 广播发送者通过 Binder 机制向 AMS 发送广播。
  3. AMS 根据广播发送者要求(IntentFilter、Permission),在已注册列表中寻找适合的接收者。
  4. AMS 将广播发送到合适的广播接收者相应的消息循环队列中。
  5. 广播接收者通过消息循环拿到广播,并回调 onReceive() 方法。

注:广播发送者和接收者的执行是异步的,发送者不会关心有无接收者接收,也不确定接收者何时才能接收到。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值