版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第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è)教室都會(huì)裝有一個(gè)喇叭,這些喇叭是接入到學(xué)校廣播室的。如果有重要通知,會(huì)發(fā)送一條廣播來(lái)告知全校師生。為了便于發(fā)送和接收系統(tǒng)級(jí)別的消息通知,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ā)布者要求,在已注冊(cè)列表中,尋找合適的消息訂閱者,尋找依據(jù)是(IntentFilter/Permission)3、發(fā)送廣播1、注冊(cè)廣播接收者(Binder機(jī)制)
消息訂閱者(廣播接收者)上述圖中的廣播機(jī)制的實(shí)現(xiàn)流程具體如下:1、廣播接收者是通過(guò)Binder機(jī)制在AMS(ActivityManagerService)中進(jìn)行注冊(cè)的
(在6.2小節(jié)會(huì)講解廣播接收者的注冊(cè))。2、廣播發(fā)送者是通過(guò)Binder機(jī)制向AMS發(fā)送廣播。3、AMS查找符合相應(yīng)條件(IntentFilter/Permission)的廣播接收者
(BroadcastReceiver),將廣播發(fā)送到相應(yīng)的消息循環(huán)隊(duì)列中。4、執(zhí)行消息循環(huán)時(shí)獲取到此廣播,會(huì)回調(diào)廣播接收者(BroadcastReceiver)中的onReceive()方法并在該方法中進(jìn)行相關(guān)處理。應(yīng)用場(chǎ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í)際生活中,電臺(tái)用于發(fā)送廣播,收音機(jī)用于接收廣播。發(fā)送廣播消息廣播接收者廣播特點(diǎn)Android系統(tǒng)中內(nèi)置了很多廣播,例如手機(jī)開(kāi)機(jī)完成、電池電量不足時(shí)都會(huì)發(fā)送一條廣播。為了監(jiān)聽(tīng)來(lái)自系統(tǒng)或者應(yīng)用程序的廣播事件,Android系統(tǒng)提供了BroadcastReceiver(廣播接收者)組件。當(dāng)Android系統(tǒng)產(chǎn)生一個(gè)廣播事件時(shí),可以有多個(gè)對(duì)應(yīng)的廣播接收者接收并進(jìn)行處理。BroadcastReceiver2Android系統(tǒng)或其他程序產(chǎn)生的廣播事件BroadcastReceiver1BroadcastReceiver36.2.1什么是廣播接收者6.2.2廣播接收者的創(chuàng)建廣播接收者的創(chuàng)建方式有兩種,具體如下:一種是通過(guò)在應(yīng)用程序的包中創(chuàng)建一個(gè)類繼承BroadcastReceiver并重寫onReceive()方法來(lái)實(shí)現(xiàn)的。一種是通過(guò)選中應(yīng)用程序中的包,右擊選擇【New】→【Other】→【BroadcastReceiver】選項(xiàng)來(lái)創(chuàng)建的。注意:
創(chuàng)建完廣播接收者之后還需要對(duì)廣播接收者進(jìn)行注冊(cè)才可以接收廣播。6.2.2廣播接收者的創(chuàng)建選擇【New】→【Other】→【BroadcastReceiver】選項(xiàng)來(lái)創(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í)例化過(guò)濾器并設(shè)置要過(guò)濾的廣播Stringaction="vider.Telephony.SMS_RECEIVED";IntentFilterintentFilter=newIntentFilter();intentFilter.addAction(action);registerReceiver(receiver,intentFilter);//注冊(cè)廣播動(dòng)態(tài)注冊(cè)動(dòng)態(tài)注冊(cè)廣播,動(dòng)態(tài)注冊(cè)的廣播接收者是否被注銷依賴于注冊(cè)廣播的組件,當(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)注冊(cè)注冊(cè)廣播當(dāng)Activity銷毀時(shí),取消注冊(cè)實(shí)例化過(guò)濾器并設(shè)置要過(guò)濾的廣播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)注冊(cè)靜態(tài)注冊(cè)廣播,在小于Android8.0的設(shè)備上,只要設(shè)備處于開(kāi)啟狀態(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í)需要編寫對(duì)應(yīng)的廣播接收者。公共消息區(qū)自定義廣播廣播接收者發(fā)送消息監(jiān)聽(tīng)消息當(dāng)自定義廣播發(fā)送消息時(shí),會(huì)儲(chǔ)存到公共消息區(qū)中,而公共消息區(qū)中如果存在對(duì)應(yīng)的廣播接收者,就會(huì)及時(shí)的接收這條信息。6.3.1自定義廣播廣播的類型Android系統(tǒng)提供了兩種廣播類型,有序廣播和無(wú)序廣播,開(kāi)發(fā)者可根據(jù)需求為程序設(shè)置不同的廣播類型。無(wú)序廣播無(wú)序廣播是完全異步執(zhí)行,發(fā)送廣播時(shí)所有監(jiān)聽(tīng)這個(gè)廣播的廣播接收者都會(huì)接收到此消息,但接收的順序不確定。按照接收者的優(yōu)先級(jí)接收,只有一個(gè)廣播接收者能接收消息,在此廣播接收者中邏輯執(zhí)行完畢后,才會(huì)繼續(xù)傳遞。有序廣播6.3.2廣播的類型發(fā)送廣播廣播接收者1廣播接收者2廣播接收者3優(yōu)先級(jí)最高優(yōu)先級(jí)較高優(yōu)先級(jí)最低發(fā)送廣播廣播接收者1廣播接收者2廣播接收者36.3.2廣播的類型優(yōu)先級(jí)//動(dòng)態(tài)注冊(cè)MyReceiver廣播
MyReceiver
one=newMyReceiver();In
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新型建筑材料采購(gòu)及安裝合同3篇
- 2025年度信用證抵押貸款業(yè)務(wù)信用評(píng)級(jí)合同4篇
- 科技在家庭陽(yáng)臺(tái)綠化中的應(yīng)用
- 深化教育領(lǐng)域的國(guó)際交流與合作-以XX學(xué)校為例
- 2025年高校外籍教師任職及培訓(xùn)服務(wù)合同3篇
- 打造智慧校園健身區(qū)域的技術(shù)創(chuàng)新與升級(jí)方案
- 科技在醫(yī)療健康領(lǐng)域中的農(nóng)業(yè)應(yīng)用案例分享
- 二零二五版電商直播主播內(nèi)容創(chuàng)作及分成合同3篇
- 2025版信用社個(gè)人教育貸款擔(dān)保合同3篇
- 2025年度科技園區(qū)建設(shè)合作協(xié)議:典型合同“知識(shí)產(chǎn)權(quán)保證合同”3篇
- 廣東省佛山市2025屆高三高中教學(xué)質(zhì)量檢測(cè) (一)化學(xué)試題(含答案)
- 項(xiàng)目可行性研究報(bào)告評(píng)估咨詢管理服務(wù)方案1
- 5歲幼兒數(shù)學(xué)練習(xí)題
- 2024年全國(guó)體育單招英語(yǔ)考卷和答案
- 食品安全管理制度可打印【7】
- 2024年九年級(jí)語(yǔ)文中考名著閱讀《儒林外史》考前練附答案
- 抖音麗人行業(yè)短視頻直播項(xiàng)目運(yùn)營(yíng)策劃方案
- 2024年江蘇揚(yáng)州市邗城文化旅游發(fā)展有限公司招聘筆試參考題庫(kù)含答案解析
- 小學(xué)六年級(jí)數(shù)學(xué)100道題解分?jǐn)?shù)方程
- 社區(qū)獲得性肺炎護(hù)理查房?jī)?nèi)科
- 淺談提高中學(xué)生歷史學(xué)習(xí)興趣的策略
評(píng)論
0/150
提交評(píng)論