Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android BroadcastReceiver介紹

Android BroadcastReceiver介紹

編輯:Android開發實例

在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver
活動(Activity) - 用於表現功能
服務(Service) - 相當於後台運行的 Activity
廣播(Broadcast) - 用於發送廣播
廣播接收器(BroadcastReceiver) - 用於接收廣播
Intent - 用於連接以上各個組件,並在其間傳遞消息

BroadcastReceiver
在Android中,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver是對發送出來的Broadcast進行過濾接受並響應的一類組件。下面將詳細的闡述如何發送Broadcast和使用BroadcastReceiver過
濾接收的過程:
首先在需要發送信息的地方,把要發送的信息和用於過濾的信息(如Action、Category)裝入一個Intent對象,然後通過調用Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把Intent對象以廣播方式發送出去。
當Intent發送以後,所有已經注冊的BroadcastReceiver會檢查注冊時的IntentFilter是否與發送的Intent相匹配,若匹配則就會調用BroadcastReceiver的onReceive()方法。所以當我們定義一個BroadcastReceiver的時候,都需要實現onReceive()方法。

注冊BroadcastReceiver有兩種方式:
一種方式是,靜態的在AndroidManifest.xml中用<receiver>標簽生命注冊,並在標簽內用<intent-filter>標簽設置過濾器。

另一種方式是,動態的在代碼中先定義並設置好一個 IntentFilter對象,然後在需要注冊的地方調Context.registerReceiver()方法,如果取消時就調用Context.unregisterReceiver()方法。如果用動態方式注冊的BroadcastReceiver的Context對象被銷毀時,BroadcastReceiver也就自動取消注冊了。
另外,若在使用sendBroadcast()的方法是指定了接收權限,則只有在AndroidManifest.xml中用<uses-permission>標簽聲明了擁有此權限的BroascastReceiver才會有可能接收到發送來的Broadcast。

同樣,若在注冊BroadcastReceiver時指定了可接收的Broadcast的權限,則只有在包內的AndroidManifest.xml中用<uses-permission>標簽聲明了,擁有此權限的Context對象所發送的Broadcast才能被這個BroadcastReceiver所接收。

動態注冊:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(String);--為BroadcastReceiver指定action,使之用於接收同action的廣播registerReceiver(BroadcastReceiver,intentFilter);
一般:在onStart中注冊,onStop中取消unregisterReceiver

發送廣播消息:extends Service
指定廣播目標Action:Intent Intent = new Intent(action-String)
--指定了此action的receiver會接收此廣播
需傳遞參數(可選) putExtra();
發送:sendBroadcast(Intent);

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved