《Android實戰(zhàn)基礎教程》課件第七章_第1頁
《Android實戰(zhàn)基礎教程》課件第七章_第2頁
《Android實戰(zhàn)基礎教程》課件第七章_第3頁
《Android實戰(zhàn)基礎教程》課件第七章_第4頁
《Android實戰(zhàn)基礎教程》課件第七章_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

目錄7.1創(chuàng)建廣播7.2普通廣播7.3有序廣播七、BroadcastReceiver七、BroadcastReceiver

啟動BroadcastReceiver(1)創(chuàng)建需要啟動BroadcastReceiver的Intent;(2)調(diào)用Context的sendBroadcast()或sendOrderedBroadcast()方法來啟動指定的BroadcastReceiver。

實現(xiàn)BroadcastReceiver只要重寫B(tài)roadcastReceiver的onReceive(Conextcontext,Intentintent)方法即可。7.1創(chuàng)建廣播七、BroadcastReceiver

實現(xiàn)了BroadcastReceiver,就應該指定該BroadcastReceiver能匹配的Intent,此時有兩種方式:(1)使用代碼進行指定。調(diào)用BroadcastReceiver的Context的registerReceiver(BroadcastReceiverreceiver,IntentFilterfilter)方法進行指定。例如:(2)在AndroidManifest.xml文件中配置。例如:七、BroadcastReceiver

如果BroadcastReceiver的onReceiver()方法不能在10秒內(nèi)執(zhí)行完成,Android會認為該程序無響應。所以不要在BroadcastReceiver的onReceive()方法里執(zhí)行一些耗時操作,否則會彈出ANR。

如果確實需要根據(jù)Broadcast來完成一項比較耗時的操作,則可以考慮通過Intent啟動一個Service來完成該操作,不應考慮使用新線程去完成耗時操作,因為廣播接收者本身的生命周期很短,可能出現(xiàn)的情況是子線程還沒有結束,BroadcastReceiver就已經(jīng)退出了。

如果BroadcastReceiver所在的進程結束了,雖然該進程內(nèi)還有用戶啟動的新線程,但由于該進程不包含任何活動組件,因此系統(tǒng)可能在內(nèi)存緊張時有限結束該進程,這樣就可能導致BroadcastReceiver啟動的子線程不能執(zhí)行完成。七、BroadcastReceiver

在程序中發(fā)送廣播需調(diào)用Context的sendBroadcast(Intentintent)方法,這條廣播將會啟動intent參數(shù)所對應的BroadcastReceiver。示例:發(fā)送Broadcast和使用BroadcastReceiver接收廣播。該程序的Activity界面中包含了一個按鈕,當用戶單擊該按鈕時程序會向外發(fā)送一條廣播。7.2普通廣播七、BroadcastReceiver七、BroadcastReceiver

粗體字代碼用于創(chuàng)建一個Intent對象,并使用該Intent對象對外發(fā)送一條廣播,所使用的BroadcastReceiver代碼:七、BroadcastReceiver

當符合該MyBroadcastReceiver的廣播出現(xiàn)時,該MyBroadcastReceiver的onReceive()方法將會觸發(fā),從而在該方法中顯示廣播所攜帶的信息。

上面發(fā)送廣播的程序中在指定發(fā)送廣播時所用的Intent的Action為“com.iboss.receiver”,需要廣播接收者監(jiān)聽Action,在清單文件中增加配置即可:七、BroadcastReceiver

運行該程序,點擊程序中的“發(fā)送廣播”按鈕,觀察Logcat輸出,從Logcat可以看出,廣播接收者接收到了MainActivity發(fā)送的廣播同時收到它攜帶的數(shù)據(jù)。圖7.1七、BroadcastReceiverBroadcast分為兩種:1.NormalBroadcast(普通廣播):NormalBroadcast是完全異步的,可以在同一時刻被所有接收者接收到,消息傳遞的效率比較高,但缺點是接受者不能將處理結果傳遞給下一個接收者,并且無法終止Broadcast的傳播。2.OrderedBroadcast(有序廣播):OrderedBroadcast的接收者將按預先聲明的優(yōu)先級依次接收Broadcast。7.3有序廣播七、BroadcastReceiverContext提供了兩個方法用于發(fā)送廣播:(1)?sendBroadcast():發(fā)送普通廣播。(2)?sendOrderedBroadcast:發(fā)送有序廣播。案例:用師父傳功的場景來模擬接收者接收一個發(fā)送廣播。師父對3個徒弟一視同仁,教授徒弟武功,可以模擬成發(fā)送普通廣播。當發(fā)送普通廣播時,每個徒弟學習相同的內(nèi)容(同時接收廣播)。如果師父只傳授給大師兄,大師兄傳授給二師兄,二師兄再傳授給三師兄,就需要優(yōu)先級,這樣又存在一個能力問題,師兄們的能力有限,不能完全接收上一級教授的知識,那么他相應地傳給下一級的功夫肯定打折扣。這就模擬了有序廣播。七、BroadcastReceiver

該程序的Activity界面上只有兩個普通按鈕,一個發(fā)送普通廣播,另一個發(fā)送有序廣播,項目結構:圖7.2七、BroadcastReceiver

在清單文件中注冊三個廣播接收者。它們的action都是相同的,這樣就確保發(fā)送廣播都能接收到,優(yōu)先級別分別為1000、600、400:七、BroadcastReceiver布局文件設置了2個按鈕,并且同時綁定了點擊事件:七、BroadcastReceiver

在這三個廣播接收者中,都接收了傳遞來的數(shù)據(jù),并做相應的修改。

大師兄的代碼如下:七、BroadcastReceiver二師兄的代碼如下:七、BroadcastReceiver三師兄的代碼如下:七、BroadcastReceiverMainActivity中處理普通廣

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論