关于安卓的广播机制Broadcast

一:广播的注册

广播作为安卓四大组件之一,自然也要注册。广播的注册分为动态注册和静态注册。

动态注册:

IntentFilter intentFilter = new IntentFilter();

//获得IntentFilter的实例
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

//监听android.net.conn.CONNECTIVITY_CHANGE这个广播
NetworkChangeReceiver networkChangeReceiver = new NetworkChangeReceiver();

//获得广播接收器的实例,有些广播接收器需要自己创建,有些事系统带有的
localBroadcastManager.registerReceiver(networkChangeReceiver, intentFilter);

//最后调用registerReceiver进行注册

注意:动态注册的广播接收器一定要在onDestroy()中取消注册   unregisterReceiver(networkChangeReceiver),当然还有权限问题也要注意


静态注册:

<receiver android:name=".MyBroadcastReceiver" >

//MyBroadcastReceiver是自定义的广播接收器接受com.example.broadcasttest.MY_BROADCAST这个广播
            <intent-filter android:priority="100">
                <action android:name="com.example.broadcasttest.MY_BROADCAST"></action>//添加广播
            </intent-filter>
</receiver>

在AndroidManifest中为intent-filter添加广播

注意:静态注册主要是为了让程序未启动也能接受广播,例如开机启动


二:自定义广播

1.标准广播

Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");

//把要发送的广播的值传入Intent

sendBroadcast(intent);

//调用sendBroadcast发送广播

所有监听此广播的广播接收器都能接受到此广播

2.有序广播

当有两个或以上的广播接收器监听同一广播时,静态注册广播接受器A设置优先级为100

<intent-filter android:priority="100">

并且在A的代码中onReceive()方法中调用abortBroadcast()方法,截断此广播

当然还要把发送广播的方法改为sendOrderBroadcast(intent)

因此只有A才能接受到此广播


三:本地广播

使用这个机制发出的广播只能在此程序内部传递,也只能接受本程序的广播

本地广播主要用LocalBroadcastManager来对广播进行管理

1.首先调用LocalBroadcastManager的getInstance()方法获得LocalBroadcastManager的实例;

private LocalBroadcastManager localBroadcastManager = LocalBroadcastManager .getInstance(this);

2.调用LocalBroadcastManager的registerReceiver方法进行注册

3.调用LocalBroadcastManager的sendBroadcast方法发送广播

注意:本地广播无法通过静态注册方式来接受







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值