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>
  • 效果如图所示
    Broadcast--自定义广播_第1张图片

  • 接上面的代码,在新建一个羡慕,写一个广播接收器,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>
  • 效果图如下
    Broadcast--自定义广播_第2张图片

发送有序广播

  • 有序广播可以被截断
  • 将上面的代码进行简单的修改
                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,说明只有第一个接收器接受了广播,并且将其截断了。
    Broadcast--自定义广播_第3张图片

你可能感兴趣的:(Broadcast--自定义广播)