第二章 BroadcastReceiver专题

2018-12-21  本文已影响0人  唔笛plk

一、广播接受是什么

BroadcastReceiver本质上是一个全局的监听器,用于监听系统全局的Android的四大组件之一。
(本质观察者模式)

二、广播的种类

1.无序广播

normal broadcast 优点:完全异步,同一时刻被所有接收者接收,处理效率高
缺点:接收者不能将处理结果传给下个个接受者,无法终止广播传送

2.有序广播

事先设置优先等级 <intent-filter>标签中设置等级 -1000~1000,数值越大,等级越高,按照优先级顺序传送,可以将处理结果发送给下一个接收者

<receiver android:name=".service.NoticeCancelBroadcastReceiver">
            <intent-filter android:priority="100">
                <action android:name="notice_cancel" />
            </intent-filter>
</receiver>

3.本地广播LocalBroadcastManager类

1.注册广播

LocalBroadcastManager.getInstance(Context context).registerReceiver(BroadcastReceiver receiver, IntentFilter filter);

2.取消广播

LocalBroadcastManager.getInstance(this).unregisterReceiver(BroadcastReceiver receiver);

3.发送广播

LocalBroadcastManager.getInstance(Context context).sendBroadcast(Intent intent);

三、广播的注册

1.静态注册

receiver android:name=".service.NoticeCancelBroadcastReceiver">
            <intent-filter android:priority="100">
                <action android:name="notice_cancel" />
            </intent-filter>
</receiver>

2.动态注册

// 注册网络状态监听
intentFilter = new IntentFilter();
intentFilter.addAction(BroadcastUtils.CONNECTIVITY_CHANGE);
registerReceiver(broadcastReceiver, intentFilter);

// 取消注册
 unregisterReceiver(broadcastReceiver);

3.动态注册于静态注册的区别

四、源码角度分析广播机制

1.本地广播的源码分析

https://blog.csdn.net/u010687392/article/details/49744579

2.系统广播源码分析

http://codemx.cn/2017/12/25/AndroidOS007-Broadcast2/

上一篇下一篇

猜你喜欢

热点阅读