BroadcastReceiver—簡介

Android BroadcastReceiver 簡介 

在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 
   活動(Activity) - 用於表現功能  
   服務(Service) - 至關於後臺運行的 Activity 
   廣播(Broadcast) - 用於發送廣播  
   廣播接收器(BroadcastReceiver) - 用於接收廣播 

   Intent - 用於鏈接以上各個組件,並在其間傳遞消息 spa

BroadcastReceiver 
xml

    在Android中,Broadcast是一種普遍運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver是對發送出來的 Broadcast進行過濾接受並響應的一類組件。下面將詳細的闡述對象

如何發送Broadcast和使用BroadcastReceiver過 濾接收的過程: it

    首先在須要發送信息的地方,把要發送的信息和用於過濾的信息(如Action、Category)裝入一個Intent對象,而後經過調用 Context.sendBroadcast()、sendOrderBroadcast()或sendStickyBroadcast()方法,把 Intent對象以廣播方式發送出去。 

    當Intent發送之後,全部已經註冊的BroadcastReceiver會檢查註冊時的IntentFilter是否與發送的Intent相匹配,若 匹配則就會調用BroadcastReceiver的onReceive()方法。因此當咱們定義一個BroadcastReceiver的時候,都須要 實現onReceive()方法。 io

註冊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(); 
ast

    發送:sendBroadcast(Intent);後臺

相關文章
相關標籤/搜索