浅谈广播
广播属于Android四大组件之一,它的主要用于APP内部组件间的通讯,负责监听、接收、分发App内部的广播消息并做响应。我还理解的比较浅显,此篇文章也是借鉴了很多文章后的产物,有错误望指出。
原理分析
实现步骤(以广播网络状态为例)
- 定义广播接受器BroadcastReceiver
- 注册广播接收器
- 发布广播
1. 定义广播接受器BroadcastReceiver
继承BroadcastReceivre
类,重写onReceive()
方法
//网络广播接受器
public class NetBroadcastReceiver extends BroadcastReceiver {
private NetEvent netEvent;
@Override
public void onReceive(Context context, Intent intent) {
//在这里写上相关的处理代码,一般来说,不要此添加过多的逻辑或者是进行任何的耗时操作
//因为广播接收器运行在UI线程,不允许开启多线程的,过久的操作就会出现报错
//因此广播接收器更多的是扮演一种打开程序其他组件的角色,比如创建一条状态栏通知,或者启动某个服务
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
int netWrokState = NetUtil.getNetWorkState(context);
if (netEvent != null)
netEvent.onNetChange(netWrokState);
}
}
}
2. 注册广播接收器
注册有两种方式:静态/动态注册
静态注册
注册方式:在AndroidManifest.xml
中通过<receive>
标签声明。
<!-- APP首次启动时,系统自动实例化 NetBroadcastReceiver 类,并将其注册到系统中 -->
<receiver
//广播接收者器的名字
android:name=".NetBroadcastReceiver " >
//用于接收网络状态改变时发出的广播
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>