1. 程式人生 > >Android四大元件之BroadcastReceiver的使用

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開源框架對事件匯流排優化,使用起來也方便,適用於快速開發

附上原始碼:

原始碼下載