工作之餘,有些閒功夫,想想還是總結一下基礎知識,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開源框架對事件總線優化,使用起來也方便,適用於快速開發
附上源碼: