【正文】
第 9章 BroadcastReceiver的使用 網(wǎng)絡(luò)資源: 號: 1281147324 : 490420731( Android編程入門) 主要內(nèi)容 B r o a d c a s t R e c e i v e r創(chuàng) 建注 冊廣 播 的 分 類啟 動 廣 播 的 方 式音 樂 播 放 器 示 例靜 態(tài) 注 冊動 態(tài) 注 冊普 通 廣 播有 序 廣 播s e n d B r o a d c a s ts e n d O r d e r e d B r o a d c a s t通 過 X M L 文 件 注 冊通 過 J a v a 代 碼 注 冊繼 承 B r o a d c a s t R e c e i v e r 基 類 BroadcastReceiver介紹 ? 廣播是一種廣泛運用在應(yīng)用程序之間傳輸信息的機制,而 BroadcastReceiver是對發(fā)送出來的廣播進行過濾接收并響應(yīng)的一類組件。 ? BroadcastReceiver 本質(zhì)上是一種 全局監(jiān)聽器 ,用于監(jiān)聽系統(tǒng)全局的廣播消息,因此它可以非常方便地實現(xiàn)系統(tǒng)中不同組件之間的通信。 ? BroadcastReceiver用于 接收指定的廣播 ,廣播的發(fā)送是通過調(diào)用 ()、()來實現(xiàn)的。通常一個廣播可以被訂閱了該 Intent的多個廣播接收者所接收,如同一個廣播臺,可以被多位聽眾收聽一樣。 BroadcastReceiver介紹 BroadcastReceiver自身并 不實現(xiàn)圖形用戶界面 ,但是當(dāng)它收到某個消息后,可以 啟動 Activity作為響應(yīng) ,或者通過 NotificationManager提醒用戶 ,或者 啟動 Service等等。 啟動 BroadcastReceiver通常 需要以下兩步 : 創(chuàng)建 Intent, 指定 BroadcastReceiver的特征; 調(diào)用 Context的 sendBroadcast()(發(fā)送普通廣播 )或sendOrderedBroadcast()(發(fā)送有序廣播 )方法來 發(fā)送廣播,觸發(fā)指定的 BroadcastReceiver。 當(dāng)應(yīng)用程序發(fā)出一個 廣播 之后,所有匹配該 Intent的BroadcastReceiver都有可能被啟動。 BroadcastReceiver介紹 開發(fā)自己的 BroadcastReceiver與開發(fā)其他組件一樣,只需要繼承 Android中的 BroadcastReceiver基類 ,然后 實現(xiàn)里面的相關(guān)方法 即可。 public class MyBroadcastReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { } } 在 onReceive()方法中,接收了一個 Intent的參數(shù),通過它可以 獲取廣播 所攜帶的數(shù)據(jù) 。 BroadcastReceiver介紹 創(chuàng)建完廣播接收者后,并不能馬上使用,還必須為它 注冊一個指定的廣播 ,就如同我們有了收音機后,還必須選擇收聽哪個頻道一樣。 在 Android中為 BroadcastReceiver注冊廣播有兩種方式: 靜態(tài)注冊 和 動態(tài)注冊 。 receiver android:name=.MyBroadcastReceiver intentfilter action android:name= /action /intentfilter /receiver 靜態(tài)注冊: 是指在 。 BroadcastReceiver介紹 MyBroadcastReceiver myBroadcastReceiver=new MyBroadcastReceiver()。 IntentFilter filter=new IntentFilter()。 registerReceiver(myBroadcastReceiver, filter)。 動態(tài) 注冊: 需要在代碼中 動態(tài)的指定廣播地址并注冊 ,通常是在 Activity或 Service中調(diào)用 ContextWrapper的registerReceiver( BroadcastReceiver receiver,IntentFilter filter)方法進行 注冊 。 BroadcastReceiver介紹 注冊完成后,即可 接收相應(yīng)的廣播消息 。一旦廣播( Broadcast)事件發(fā)生后,系統(tǒng)就會 創(chuàng)建對應(yīng)的BroadcastReceiver實例 ,并 自動觸發(fā) 它的 onReceive()方法,onReceive()方法 執(zhí)行完后 , BroadcastReceiver的實例就會被銷毀 。 如果 BroadcastReceiver的 onReceive()方法不能在 10秒內(nèi)執(zhí)行完成 , Android會認(rèn)為 該程序無響應(yīng) 。所以不要在廣播接收者的 onReceive()方法里執(zhí)