版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第6章廣播機(jī)制6
6.1廣播機(jī)制的概述6.2廣播接收者6.3自定義廣播與廣播的類型3廣播接收者重點(diǎn)了解掌握2自定義廣播廣播的類型攔截有序廣播1學(xué)習(xí)目標(biāo)6.1廣播機(jī)制的概述主講內(nèi)容Speechcontent主講內(nèi)容第6章廣播機(jī)制6.1廣播機(jī)制的概述通常情況下在學(xué)校的每個(gè)教室都會裝有一個(gè)喇叭,這些喇叭是接入到學(xué)校廣播室的。如果有重要通知,會發(fā)送一條廣播來告知全校師生。為了便于發(fā)送和接收系統(tǒng)級別的消息通知,Android系統(tǒng)也引入了一套類似廣播的消息機(jī)制。Android中的廣播(Broadcast)機(jī)制用于進(jìn)程/線程間通信,該機(jī)制使用了觀察者模式,觀察者模式是一種軟件設(shè)計(jì)模式,該模式是基于消息的發(fā)布/訂閱事件模型,該模型中的消息發(fā)布者是廣播機(jī)制中的廣播發(fā)送者,消息訂閱者是廣播機(jī)制中的廣播接收者,廣播機(jī)制的具體實(shí)現(xiàn)流程,如下圖所示。6.1廣播機(jī)制的概述
消息發(fā)送者(廣播發(fā)送者)2、發(fā)送廣播(Binder機(jī)制)處理中心(AMS)根據(jù)消息發(fā)布者要求,在已注冊列表中,尋找合適的消息訂閱者,尋找依據(jù)是(IntentFilter/Permission)3、發(fā)送廣播1、注冊廣播接收者(Binder機(jī)制)
消息訂閱者(廣播接收者)上述圖中的廣播機(jī)制的實(shí)現(xiàn)流程具體如下:1、廣播接收者是通過Binder機(jī)制在AMS(ActivityManagerService)中進(jìn)行注冊的
(在6.2小節(jié)會講解廣播接收者的注冊)。2、廣播發(fā)送者是通過Binder機(jī)制向AMS發(fā)送廣播。3、AMS查找符合相應(yīng)條件(IntentFilter/Permission)的廣播接收者
(BroadcastReceiver),將廣播發(fā)送到相應(yīng)的消息循環(huán)隊(duì)列中。4、執(zhí)行消息循環(huán)時(shí)獲取到此廣播,會回調(diào)廣播接收者(BroadcastReceiver)中的onReceive()方法并在該方法中進(jìn)行相關(guān)處理。應(yīng)用場景同一app內(nèi)部的同一組件內(nèi)的消息通信(單個(gè)或多個(gè)線程之間);同一app內(nèi)部的不同組件之間的消息通信(單個(gè)進(jìn)程);同一app具有多個(gè)進(jìn)程的不同組件之間的消息通信;不同app之間的組件之間消息通信;Android系統(tǒng)在特定情況下與App之間的消息通信。6.1廣播機(jī)制的概述6.2廣播接收者主講內(nèi)容Speechcontent主講內(nèi)容6.2.1什么是廣播接收者6.2.2廣播接收者的創(chuàng)建第6章廣播機(jī)制實(shí)際生活中,電臺用于發(fā)送廣播,收音機(jī)用于接收廣播。發(fā)送廣播消息廣播接收者廣播特點(diǎn)Android系統(tǒng)中內(nèi)置了很多廣播,例如手機(jī)開機(jī)完成、電池電量不足時(shí)都會發(fā)送一條廣播。為了監(jiān)聽來自系統(tǒng)或者應(yīng)用程序的廣播事件,Android系統(tǒng)提供了BroadcastReceiver(廣播接收者)組件。當(dāng)Android系統(tǒng)產(chǎn)生一個(gè)廣播事件時(shí),可以有多個(gè)對應(yīng)的廣播接收者接收并進(jìn)行處理。BroadcastReceiver2Android系統(tǒng)或其他程序產(chǎn)生的廣播事件BroadcastReceiver1BroadcastReceiver36.2.1什么是廣播接收者6.2.2廣播接收者的創(chuàng)建廣播接收者的創(chuàng)建方式有兩種,具體如下:一種是通過在應(yīng)用程序的包中創(chuàng)建一個(gè)類繼承BroadcastReceiver并重寫onReceive()方法來實(shí)現(xiàn)的。一種是通過選中應(yīng)用程序中的包,右擊選擇【New】→【Other】→【BroadcastReceiver】選項(xiàng)來創(chuàng)建的。注意:
創(chuàng)建完廣播接收者之后還需要對廣播接收者進(jìn)行注冊才可以接收廣播。6.2.2廣播接收者的創(chuàng)建選擇【New】→【Other】→【BroadcastReceiver】選項(xiàng)來創(chuàng)建廣播如下:廣播接收者名稱創(chuàng)建完成
publicclassMyReceiverextendsBroadcastReceiver{publicMyReceiver(){}@OverridepublicvoidonReceive(Contextcontext,Intentintent){thrownewUnsupportedOperationException("Notyetimplemented");}}創(chuàng)建廣播接收者在該方法中實(shí)現(xiàn)廣播接收者的相關(guān)操作6.2.2廣播接收者的創(chuàng)建receiver=newMyBroadcastReceiver();//實(shí)例化廣播接收者//實(shí)例化過濾器并設(shè)置要過濾的廣播Stringaction="vider.Telephony.SMS_RECEIVED";IntentFilterintentFilter=newIntentFilter();intentFilter.addAction(action);registerReceiver(receiver,intentFilter);//注冊廣播動(dòng)態(tài)注冊動(dòng)態(tài)注冊廣播,動(dòng)態(tài)注冊的廣播接收者是否被注銷依賴于注冊廣播的組件,當(dāng)組件銷毀時(shí),廣播接收者也隨之被注銷。6.2.2廣播接收者的創(chuàng)建protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);MyReceiverreceiver=newMyReceiver();Stringaction="vider.Telephony.SMS_RECEIVED";IntentFilterintentFilter=newIntentFilter();intentFilter.addAction(action);registerReceiver(receiver,intentfilter);}protectedvoidonDestroy(){super.onDestroy();unregisterReceiver(receiver);}動(dòng)態(tài)注冊注冊廣播當(dāng)Activity銷毀時(shí),取消注冊實(shí)例化過濾器并設(shè)置要過濾的廣播6.2.2廣播接收者的創(chuàng)建<?xmlversion="1.0"encoding="utf-8"?><manifest……….><application………><receiverandroid:name=".MyReceiver"android:enabled="true"android:exported="true"><intent-filter><actionandroid:name="ent.action.ACTION_POWER_CONNECTED"/></intent-filter></receiver></application></manifest>靜態(tài)注冊靜態(tài)注冊廣播,在小于Android8.0的設(shè)備上,只要設(shè)備處于開啟狀態(tài),廣播接收者就能接收到廣播。6.2.2廣播接收者的創(chuàng)建6.3自定義廣播與廣播的類型主講內(nèi)容Speechcontent主講內(nèi)容6.3.1自定義廣播6.3.2廣播的類型第6章廣播機(jī)制自定義廣播當(dāng)系統(tǒng)提供的廣播不能滿足實(shí)際需求時(shí),可以自定義廣播,同時(shí)需要編寫對應(yīng)的廣播接收者。公共消息區(qū)自定義廣播廣播接收者發(fā)送消息監(jiān)聽消息當(dāng)自定義廣播發(fā)送消息時(shí),會儲存到公共消息區(qū)中,而公共消息區(qū)中如果存在對應(yīng)的廣播接收者,就會及時(shí)的接收這條信息。6.3.1自定義廣播廣播的類型Android系統(tǒng)提供了兩種廣播類型,有序廣播和無序廣播,開發(fā)者可根據(jù)需求為程序設(shè)置不同的廣播類型。無序廣播無序廣播是完全異步執(zhí)行,發(fā)送廣播時(shí)所有監(jiān)聽這個(gè)廣播的廣播接收者都會接收到此消息,但接收的順序不確定。按照接收者的優(yōu)先級接收,只有一個(gè)廣播接收者能接收消息,在此廣播接收者中邏輯執(zhí)行完畢后,才會繼續(xù)傳遞。有序廣播6.3.2廣播的類型發(fā)送廣播廣播接收者1廣播接收者2廣播接收者3優(yōu)先級最高優(yōu)先級較高優(yōu)先級最低發(fā)送廣播廣播接收者1廣播接收者2廣播接收者36.3.2廣播的類型優(yōu)先級//動(dòng)態(tài)注冊MyReceiver廣播
MyReceiver
one=newMyReceiver();In
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年海洋油氣開采模塊投資申請報(bào)告
- 2023年旅居車輛資金需求報(bào)告
- 2024土地租賃擔(dān)保合同
- 2024次新房買賣合同范文
- 2024年飼料級磷酸二氫鈣項(xiàng)目發(fā)展計(jì)劃
- 2024套房買賣合同范本協(xié)議書
- 2024年房屋整體質(zhì)量無損檢測分析系統(tǒng)項(xiàng)目合作計(jì)劃書
- 2024國際貿(mào)易合同有效成立的條件
- 2024寧波裝修公司合同樣本
- 2024房產(chǎn)買賣定金合同
- 二維碼的發(fā)展及原理
- 禮修于心 儀養(yǎng)于行 課件-2023-2024學(xué)年高一上學(xué)期文明禮儀在心中養(yǎng)成教育主題班會
- 入團(tuán)志愿書(2016版本)(可編輯打印標(biāo)準(zhǔn)A4) (1)
- 土耳其經(jīng)濟(jì)前景與投資機(jī)會PPT課件
- 《六經(jīng)辨證》PPT課件.ppt
- 藥品經(jīng)營許可證變更申請表
- 中國歷史文化街區(qū)基礎(chǔ)數(shù)據(jù)表
- 中小學(xué)實(shí)驗(yàn)室危險(xiǎn)廢物管理和處理自查報(bào)告
- 溫暖的旅程作文九年級優(yōu)秀作文五篇
- 常見髖部骨折概況
- 上海某石油化工項(xiàng)目鋼結(jié)構(gòu)工程施工方案(鋼結(jié)構(gòu)安裝)
評論
0/150
提交評論