有序广播详解

本文详细介绍了有序广播在Android系统中的工作原理,特别关注Android8.0及以上版本的变化。有序广播允许按顺序接收并可能终止广播,且能修改广播数据。在Android8.0后,静态注册的有序广播不再支持,需动态注册。文章通过实例展示了动态注册和静态注册接收有序广播的方法,并探讨了一个特殊广播接收者如何在广播被终止后仍能接收到消息的情况。
摘要由CSDN通过智能技术生成

前言

Google从Android8.0版本开始,对在清单文件中静态注册广播做了限制。

概述

类似于中央下发的红头文件,一级一级向下发送,中间如果接收失败,发送就会终止。
发送过程中,可以终止。终止后,后续的接收者则无法接收(有一种特殊情况,请参考本文中特殊的广播接收者章节)。

有序广播注意项

有序广播特点:

  1. 可以终止广播
  2. 可以修改数据

有序广播遇到的坑:

  1. Android版本8.0及其之后的版本,有序广播必须动态注册
  2. 特殊的广播接收者

动态注册 接收有序广播

  1. 定义 4 个 广播接收者:模拟有序广播的接收
//广播接收者:有序广播-1
public class Test1Receiver extends BroadcastReceiver {
   
    @Override
    public void onReceive(Context context, Intent intent) {
   
        String resultData = getResultData();
        //有序广播里终止广播
        //abortBroadcast();
        setResultData("国家发放补贴800");
        Toast.makeText(context, "省接收:"+resultData, Toast.LENGTH_SHORT).show();
    }
}

//广播接收者:有序广播-2
public class Test2Receiver extends BroadcastReceiver {
   
    @Override
    public void onReceive(Context context, Intent intent) {
   
        String resultData = getResultData();
        setResultData("国家发放补贴600");
        Toast.makeText(context, "市接收:"+resultData, Toast.LENGTH_SHORT)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值