Android四大元件之BroadcastReceiver的使用
阿新 • • 發佈:2019-02-13
工作之餘,有些閒功夫,想想還是總結一下基礎知識,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開源框架對事件匯流排優化,使用起來也方便,適用於快速開發
附上原始碼: