Android四大組件之BroadcastReceiver的使用

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


附上源碼:

源碼下載


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章