Android四大组件之BroadCastReceive

hello,大家好 ,我是小杰,前几篇博文中我给大家介绍了四大组件的其中两种,今天给大家介绍一下第三个组件,BroadCastReceive,也就是广播接受者。广播是通过Intent发送action,然后注册一个接受者来接收这个action从而进行一些操作。

 广播的发送方式

  • 无序广播
  • 有序广播

无序广播是所有的接收者都可以接收到这个action从而进行操作,而有序广播是根据优先级不同来进行接收,优先级大的先接收的这个广播,有序广播可以被拦截,一旦被拦截,优先级靠后的接受者则不能再接收到该广播。

无序广播的发送方式:

  String action = "my_broadCastReceive_test";//定义action
  Intent intent = new Intent(action);
  sendBroadcast(intent);

有序广播的发送方式:

我们要接收有序广播首先必须要先增加权限:

 <permission
        android:name="com.android.permission.RECEIVER_ORDER_BROADCAST"
        android:protectionLevel="normal" />
    <uses-permission android:name="com.android.permission.RECEIVER_ORDER_BROADCAST" />

然后在发送广播:

String RECEIVER_PERMISSION = "com.android.permission.RECEIVER_ORDER_BROADCAST";//这里的权限必须要和AndroidManifest的权限一致
String action1 = "my_broadCastReceive_test1";//定义action
Intent intent1 = new Intent(action1);
sendOrderedBroadcast(intent1, RECEIVER_PERMISSION);

BroadCastReceive注册接受者

  • 静态注册
  • 动态注册

静态注册首先你要先写一个继承BroadCastReceive的类并且实现onReceive()方法,然后在AndroidManifest.xml中进行注册:

public class MyReceive extends BroadcastReceiver {
    private static final String TAG="MyReceive";
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent!=null) {
            String action=intent.getAction();
            if (action.equals("my_broadCastReceive_test")) {
                Log.d(TAG, "onReceive: 我接受到了一条广播,action是:my_broadCastReceive_test");
            }
        }

    }
}
<receiver android:name=".MyReceive">
            <intent-filter>
                <action android:name="my_broadCastReceive_test" />
            </intent-filter>
        </receiver>

有序广播在注册时需要增加优先级:

 <receiver android:name=".MyReceive">
            <intent-filter>
                <action
                    android:name="my_broadCastReceive_test"
                    android:priority="500" />
            </intent-filter>
        </receiver>

这样一个广播接受者就注册成功了。

动态注册:

 //动态注册广播
                IntentFilter intentFilter = new IntentFilter();
                intentFilter.addAction("my_broadCastReceive_test");//添加action
                registerReceiver(new MyReceive(), intentFilter);

    有序广播增加优先级:

intentFilter.setPriority(500);

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值