Broadcast--自定义广播

发送自定义广播

发送标准广播
  • 发送自定义的标准广播很简单,只需要将在注册广播的时候将Action自定义即可
  • 首先自定义我们的广播接收器
public class MyBroadcast extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "这是一条自定义的广播", Toast.LENGTH_SHORT).show();
        abortBroadcast();
    }
}
  • 然后通过点击事件,发送自定义广播,这里自定义Action即可
                Intent intent=new Intent();
                intent.setAction("com.lingzhuo.MyBroadcast");
                sendBroadcast(intent);
  • 最后在Manifest文件中进行自定义广播的注册
        <receiver android:name=".MyBroadcast">
            <intent-filter android:priority="100">
                <action android:name="com.lingzhuo.MyBroadcast">
                </action>
            </intent-filter>
        </receiver>
  • 效果如图所示
    这里写图片描述

  • 接上面的代码,在新建一个羡慕,写一个广播接收器,Action与上面的代码相同,证明广播可以跨应用传播

  • 定义自己的广播接收器
public class MyBroadcast extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "这是一条自定义233333的广播", Toast.LENGTH_SHORT).show();
    }
}
  • 注册自定义的广播接收器
        <receiver android:name=".MyBroadcast">
            <intent-filter>
                //这里定义的Action和上面的代码的Action一致
                <action android:name="com.lingzhuo.MyBroadcast"></action>
            </intent-filter>
        </receiver>
  • 效果图如下
    这里写图片描述
发送有序广播
  • 有序广播可以被截断
  • 将上面的代码进行简单的修改
                Intent intent=new Intent();
                intent.setAction("com.lingzhuo.MyBroadcast");
                //仅将此出修改如下即可
                sendOrderedBroadcast(intent,null);
  • 有序广播需要在广播注册时设置广播的优先级
        <receiver android:name=".MyBroadcast">
        //这里将优先级设置成100,表示此接收器必第一个接收
            <intent-filter android:priority="100">
                <action android:name="com.lingzhuo.MyBroadcast">
                </action>
            </intent-filter>
        </receiver>
  • 在自定义接收器的代码中,可以设置截断广播,使其不再传播
public class MyBroadcast extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "这是一条自定义的广播", Toast.LENGTH_SHORT).show();
        //截断广播
        abortBroadcast();
    }
}
  • 效果图如下,这次的点击就不会出现两个Toast,说明只有第一个接收器接受了广播,并且将其截断了。
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值