工作之余,有些闲功夫,想想还是总结一下基础知识,Android广播在项目中使用还是比较多的,相对于四大组件,可能仅次于Activity的使用。首先,我们得知道广播的作用:从字面意思上来看,广播就好比收音机通知收听者,同时也能携带广播信息。广播的种类可分为有序广播和无需广播,然而有序广播是有顺序之分,故也有优先级之分,利用广播的优先级我们也可以做很多事,比如短信拦截,来电骚扰都会使用到广播的优先级。
下面我没有介绍有序广播,只是简单的介绍如何注册和使用广播
注册分为两种:静态注册和动态注册
一、静态注册:<application></application>标签下
<receiver android:name=".CustomerXmlBroadCastReceiver">
<intent-filter>
<action android:name="com.yufs.action.xml"/>
</intent-filter>
</receiver>
其中intent-filter为过滤器,action中name就好比广播的id,
使用:创建自己的Receiver继承BroadcastReceiver
public class CustomerXmlBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if("com.yufs.action.xml".equals(intent.getAction())){
Toast.makeText(context, "====收到xml中注册发送过来的广播===", Toast.LENGTH_SHORT).show();
}
}
}
发送广播:
Intent intent=new Intent(); //用于传输数据的intent
intent.setAction("com.yufs.action.xml"); //为这个intent加上action,用于广播过滤器过滤
sendBroadcast(intent); //使用sendBroadcast发送广播
二、动态注册:代码中注册,一般在Activity中创建的时候
同样创建自己的Receiver继承BroadcastReceiver
public class CustomerBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//action与注册的时候保持一致
if("com.yufs.action.customer".equals(intent.getAction())){
Toast.makeText(context,"接收到动态注册发送过来的广播", Toast.LENGTH_SHORT).show();
}
}
}
注册:
mReceiver=new CustomerBroadCastReceiver();//实例化广播
//创建过滤器对象
IntentFilter mFilter=new IntentFilter();
mFilter.addAction("com.yufs.action.customer");
//注册
registerReceiver(mReceiver,mFilter);
发送广播:
Intent intent=new Intent();
intent.setAction("com.yufs.action.customer");
sendBroadcast(intent);
解注册:
if(mReceiver!=null){
unregisterReceiver(mReceiver);
}
到此两种注册广播的方式可以简单的使用了,不过现在自己在项目中没有太多的用到,主要是有了EventBus3.0开源框架对事件总线优化,使用起来也方便,适用于快速开发
附上源码: