在Android中,Broadcast是一種廣泛運用的在應用程式之間傳輸資訊的機制。而BroadcastReceiver是對發送出來的 Broadcast進行過濾接受並響應的一類組件。
下面將詳細的闡述如何發送Broadcast和使用BroadcastReceiver過濾接收的過程:
首先在需要發送資訊的地方,把要發送的資訊和用於過濾的資訊(如Action、Category)裝入一個Intent對象,然後通過調用 sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent對象以廣播方式發送出去。
當Intent發送以後,所有已經註冊的BroadcastReceiver會檢查註冊時的IntentFilter是否與發送的Intent相匹配,若匹配則就會調用BroadcastReceiver的onReceive()方法。所以當我們定義一個BroadcastReceiver的時候,都需要實現onReceive()方法。
註冊BroadcastReceiver有兩種方式:
靜態註冊:在AndroidManifest.xml中用標籤生命註冊,並在標籤內用標籤設定過濾器。
<receiver android:name="myRecevice"> //繼承BroadcastReceiver,重寫onReceiver方法 <intent-filter> <action android:name="com.dragon.net"></action> //使用過濾器,接收指定action廣播 </intent-filter> </receiver>
動態註冊:
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(String); //為BroadcastReceiver指定action,使之用於接收同action的廣播 registerReceiver(BroadcastReceiver,intentFilter);