




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
BroadcastReceiver2023/9/28132023/9/28認(rèn)識(shí)BroadcastReceiver發(fā)送和監(jiān)聽廣播目錄CONTENT12參考教材:《Android應(yīng)用開發(fā)項(xiàng)目化教程》認(rèn)識(shí)BroadcastReceiver作用在Android中,廣播是一種廣泛運(yùn)用的在應(yīng)用程序之間傳輸信息的機(jī)制。BroadcastReceiver是對(duì)發(fā)送出來的廣播進(jìn)行過濾接受并響應(yīng)的一類組件。通常使用Notification顯示廣播事件。1認(rèn)識(shí)BroadcastReceiver工作機(jī)制①定義一個(gè)類繼承BroadcastReceiver,并且重載onReceiver()方法來響應(yīng)事件。②在程序中注冊(cè)BroadcastReceiver。③構(gòu)建Intent對(duì)象,把要發(fā)送的信息和用于過濾的信息如Action、Category裝入一個(gè)Intent對(duì)象,調(diào)用sendBroadcast()方法將廣播發(fā)出。④當(dāng)Intent發(fā)送以后,所有已經(jīng)注冊(cè)的BroadcastReceiver會(huì)檢查注冊(cè)時(shí)的IntentFilter是否與發(fā)送的Intent相匹配,若匹配則調(diào)用BroadcastReceiver的onReceive()方法。1BroadcastReceiver對(duì)象只有在被調(diào)用onReceive(Context,Intent)時(shí)才有效!認(rèn)識(shí)BroadcastReceiver廣播類型正常廣播正常廣播通過Context.sendBroadcast()方法發(fā)送,是完全異步的。BroadcastReceiver的onReceiver()方法不能包含所要使用的結(jié)果或中止廣播的方法。1認(rèn)識(shí)BroadcastReceiver廣播類型異步廣播異步廣播通過Context.sendStickyBroadcast()方法發(fā)送,當(dāng)處理完相應(yīng)的Intent之后,BroadcastReceiver依然存在,這時(shí)候registerReceiver(BroadcastReceiver,IntentFilter)還能收到它的值,直到調(diào)用removeStickyBroadcast(intent)方法把它去掉為止。異步廣播不能將處理結(jié)果傳給下一個(gè)接收者,且無(wú)法終止廣播。異步廣播的發(fā)送和移除都需要在AndroidManifest.xml里聲明如下權(quán)限: <uses-permissionandroid:name="android.permission.BROADCAST_STICKY"/>1認(rèn)識(shí)BroadcastReceiver廣播類型有序廣播有序廣播通過Context.sendOrderedBroadcast()方法發(fā)送,每次被發(fā)送到一個(gè)Receiver。所謂有序,就是每個(gè)Receiver執(zhí)行后可以傳播到下一個(gè)Receiver,也可以完全中止傳播(即不傳播給其他Receiver)。而Receiver運(yùn)行的順序可以通過比較IntentFilter里的android:priority來控制,當(dāng)priority優(yōu)先級(jí)相同的時(shí)候,Receiver以任意的順序運(yùn)行。sendOrderedBroadcast(intent,receiverPermission,resultReceiver,scheduler,initialCode, initialData,initialExtras)1認(rèn)識(shí)BroadcastReceiver常用方法abortBroadcast()截獲由sendOrderedBroadcast()發(fā)送來的廣播,讓其它Receiver無(wú)法收到這個(gè)廣播。clearAbortBroadcast()針對(duì)上面的abortBroadcast()方法,用于取消截獲廣播。這樣它的下一級(jí)Receiver就能夠收到該廣播。getAbortBroadcast()判斷是否調(diào)用了abortBroadcast(),如果先調(diào)用abortBroadcast(),接著再調(diào)用getAbortBroadcast(),將返回true;如果在調(diào)用abortBroadcast()、clearAbortBroadcast()后,再調(diào)用getAbortBroadcast(),將返回false。getResultCode()獲取返回碼。getResultData()得到發(fā)送廣播時(shí)設(shè)置的initialData的數(shù)據(jù)。isInitialStickyBroadcast()如果receiver是目前處理的一個(gè)宿主的廣播的初始值,將返回true。isOrderedBroadcast()判斷是否是有序廣播。1發(fā)送和監(jiān)聽廣播接收廣播實(shí)現(xiàn)BroadcastReceiver類2發(fā)送和監(jiān)聽廣播接收廣播注冊(cè)監(jiān)聽響應(yīng)廣播事件處理的Activity需要在onStart()中對(duì)相應(yīng)的BroadcastReceiver進(jìn)行注冊(cè)2發(fā)送和監(jiān)聽廣播接收廣播取消注冊(cè)監(jiān)聽在onStop()中進(jìn)行注銷2發(fā)送和監(jiān)聽廣播注冊(cè)廣播靜態(tài)注冊(cè)
在AndroidManifest.xml的<application>里定義receiver并設(shè)置要接收的Action和IntentFilter2一個(gè)<receiver>可以接收多個(gè)action,即可以有多個(gè)<intent-filter>,這需要在onReceive()里對(duì)intent.getAction(actionName)進(jìn)行判斷。發(fā)送和監(jiān)聽廣播注冊(cè)廣播動(dòng)態(tài)注冊(cè)方法一:registerReceiver(receiver,filter) 第一個(gè)參數(shù)是要處理廣播的BroadcastReceiver(可以是系統(tǒng)的,也可以是自定義的);第二個(gè)參數(shù)是Intent過濾器。方法二:registerReceiver(receiver,filter,broadcastPermission,scheduler) 第三個(gè)參數(shù)是廣播權(quán)限;第四個(gè)參數(shù)是Handler。2注意:如果在AndroidManifest.xml文件里已經(jīng)聲明了權(quán)限,在registerReceiver()方法里再次聲明權(quán)限,則Receiver無(wú)法收到廣播。對(duì)于動(dòng)態(tài)注冊(cè),需要特別注意的是,在退出程序前要記得調(diào)用Context.unregisterReceiver()方法對(duì)廣播進(jìn)行注銷。發(fā)送和監(jiān)聽廣播常用廣播Intent.ACTION_AIRPLANE_MODE_CHANGED; 關(guān)閉或打開飛行模式時(shí)的廣播<strong>Intent.ACTION_BATTERY_CHANGED; 充電狀態(tài),或者電池的電量發(fā)生變化<strong>Int
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)鍋爐司爐題庫(kù)與參考答案
- 賣車轉(zhuǎn)讓合同范本
- 一年級(jí)新生入學(xué)家長(zhǎng)會(huì)的發(fā)言稿
- 《雨》閱讀理解訓(xùn)練題及答案
- 東南亞企業(yè)合同范本
- 《長(zhǎng)方形和正方形的周長(zhǎng)》教學(xué)反思
- 取暖煤爐購(gòu)銷合同范例
- 買賣電梯合同范本
- 下定金合同范本
- 借款電子合同范本
- 2025新人教版英語(yǔ)七年級(jí)下單詞英譯漢默寫表(小學(xué)部分)
- 《聯(lián)合國(guó)教科文:學(xué)生人工智能能力框架》-中文版
- 2023年部編人教版六年級(jí)道德與法治下冊(cè)全冊(cè)課件【完整版】
- GB/T 34376-2017數(shù)控板料折彎?rùn)C(jī)技術(shù)條件
- GB/T 22492-2008大豆肽粉
- 四年級(jí)下冊(cè)美術(shù)課件 4紙卷魔術(shù)|蘇少版
- 三年級(jí)下冊(cè)豎式脫式計(jì)算
- 《財(cái)務(wù)風(fēng)險(xiǎn)的識(shí)別與評(píng)估管理國(guó)內(nèi)外文獻(xiàn)綜述》
- ??谑写媪糠抠I賣合同模板(范本)
- 經(jīng)典文學(xué)作品中的女性形象研究外文文獻(xiàn)翻譯2016年
- 高爐煤氣安全知識(shí)的培訓(xùn)
評(píng)論
0/150
提交評(píng)論