Android-基础-broadcast receiver

一、注册

1.1 静态注册:常驻广播,应用退出Receiver仍然可以接收到广播

静态注册广播,定义name action category

<receiver android:name=".MyReceiver">
        <intent-filter>
            <action android:name="android.intent.action.MY_BROADCAST"/>
            <category android:name=",android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

定义广播接收器

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    //接收外界发送的广播
}

}
向广播接收器发送广播

Intent intent = new Intent("android.intent.action.MY_BROADCAST");
    sendBroadcast(intent);

1.2 动态注册:动态注册的广播 注册后必须在合适的地方(onDestroy)解注册。

代码中动态注册:

MyReceiver receiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(“android.intent.action.MY_BROADCAST”); //添加action
registerReceiver(receiver, filter);

代码中动态解注册

unregisterReceiver(receiver);

发送广播和静态注册广播一样

Intent intent = new Intent(“android.intent.action.MY_BROADCAST”);
sendBroadcast(intent);

二、广播类型

2.1 普通广播

所有接受者完全异步,相互之间互不影响。

2.2 有序广播

每次只发送到优先级较高的接收者那里,然后由优先级高的接受者再传播到优先级低的接收者那里,优先级高的接收者有能力终止广播。
有么有责任链模式的感觉?

优先级的定义: 数字越大,优先级越高,范围-1000到1000
发送有序广播:sendOrderedBroadcast();
优先级最高的接收器先接收到广播
拦截广播,abortBroadcast();
不拦截,可以通过setResultExtras将广播传递给下一个优先级的接收器(可将原始内容修改,生成新的bundle传递给下一个)。
注意:有序广播的发送如果指定了权限,接收器也必须定义好权限才能接受到,否则无法接收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值