版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、BroadcastReceiver簡介BroadcastReceiver明白得為廣播接收者,它用于接收程序所發(fā)出的Broadcast的Intentc它在一端監(jiān)聽接收廣播消息,然后再做出處置。它的本質(zhì)上確實(shí)是屬于一個(gè)監(jiān)聽器。啟動(dòng)BroadcastRecevicer的方式有兩種:sendBroadcast()和sendOrderedBroadcast(),二者的區(qū)別確實(shí)是前者是發(fā)送一個(gè)一般的廣播,后者是發(fā)送一個(gè)有序的廣播。開發(fā)廣播接收才的步驟:1、繼承BroadcastReceiver類,重寫onReceiver(Contextcontext,Intentintent)方式2、在中注冊,一樣也能夠
2、在代碼中實(shí)現(xiàn)注冊3、通過sendBroadcast()或sendOrderedBroadcast()啟動(dòng)對應(yīng)的BroadcastReceiver下面別離介紹:實(shí)現(xiàn)廣播消息處置機(jī)制的方式繼承BroadcastReceiver,覆蓋onReceivejavaviewplaincopyprint?publicclassMyReceiverextendsBroadcastReceiverpublicMyReceiver()System.out.println(-myReceiverconstructor-);publicvoidonReceive(Contextcontext,Intentintent
3、)System.out.println(-onReceive-);/取到信息StringreceiveMsg=intent.getStringExtra(msg);Toast.makeText(context,receiveMsg,Toast.LENGTH_LONG).show();注冊BroadcastReceiver的兩種方式:方式一:中注冊:htmlviewplaincopyprint?方式二:應(yīng)用程序代碼中注冊javaviewplaincopyprint?myReceiver2=newMyReceiver2();IntentFilte門ntentFilter=newIntentFilt
4、er();Intentintent=newIntent();intentFilter.addAction(SMS_ACTION);registerReceiver(myReceiver2,intentFilter);兩種注冊方式的區(qū)別:1)第一種是常駐型,也確實(shí)是說當(dāng)應(yīng)用程序關(guān)閉后,若是有信息廣播來,程序也會被系統(tǒng)挪用自動(dòng)運(yùn)行。2)第二種不是常駐型廣播,也確實(shí)是說廣播跟從程序的生命周期。廣播的類型:廣播被分為兩種不同的類型:”一般廣播(Normalbroadcasts)和有序廣播(Orderedbroadcasts)”。一般廣播是完全異步的,能夠在同一時(shí)刻(邏輯上)被所有接收者接收到,消息傳遞
5、的效率比較高,但缺點(diǎn)是:接收者不能將處置結(jié)果傳遞給下一個(gè)接收者,而且無法終止廣播Intent的傳播;但是有序廣播是依照接收者聲明的優(yōu)先級別(聲明在intent-filter元素的android:priority屬性中,數(shù)越大優(yōu)先級別越高,取值范圍:-1000到1000。也能夠挪用IntentFilter對象的setPriority()進(jìn)行設(shè)置),被接收者依次接收廣播。如:A的級別高于B,B的級別高于C,那么,廣播先傳給A,再彳專給B,最后傳給C。A取得廣播后,能夠往廣播里存入數(shù)據(jù),當(dāng)廣播傳給B時(shí),B能夠從廣播中取得A存入的數(shù)據(jù)。Context.sendBroadcast()發(fā)送的是一般廣播,所
6、有定閱者都有機(jī)遇取得并進(jìn)行處置。Context.sendOrderedBroadcast()發(fā)送的是有序廣播,系統(tǒng)會依照接收者聲明的優(yōu)先級別按順序逐個(gè)執(zhí)行接收者,前面的接收者有權(quán)終止廣播(BroadcastReceiver.abortBroadcast(),若是廣播被前面的接收者終止,后面的接收者就再也無法獲取到廣播。關(guān)于有序廣播,前面的接收者能夠?qū)⑻幹媒Y(jié)果寄存進(jìn)廣播Intent,然后傳給下一個(gè)接收者。再總結(jié)說說兩種廣播的區(qū)別比較:一般廣播:異步,數(shù)據(jù)不共享,傳遞效率高有序廣播:同步,數(shù)據(jù)能夠達(dá)到共享,傳遞效率低說了這么一大堆,是不是都暈,那就上實(shí)例吧實(shí)例1:發(fā)送一般廣播1、寫一個(gè)繼承于Bro
7、adcastReceiver的類,并重寫onReceiver方式j(luò)avaviewplaincopyprint?packagecom.jiahui.broadcast;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.widget.Toast;publicclassMyBroadcastReceiverextendsBroadcastReceiverOverridepublicvoidonReceive(Contextco
8、ntext,Intentintent)Toast.makeText(context,”接收到的Intent的Action為+intent.getAction()+n傳遞的消息內(nèi)容為+intent.getStringExtra(msg),Toast.LENGTH_LONG)在中注冊htmlviewplaincopyprint?5.在Activity中發(fā)送廣播javaviewplaincopyprint?packagecom.jiahui.broadcast;importandroid.app.Activity;importandroid.content.Intent;importandroid.
9、os.Bundle;importandroid.view.View;importandroid.widget.Button;publicclassBroadcastDemo1ActivityextendsActivitypublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);14.ButtonbtnSend=(Button)this.findViewByld(R.id.btnSend);btnSend.setOnClickListen
10、er(newView.OnClickListener()OverridepublicvoidonClick(Viewv)Intentintent=newIntent();/指定發(fā)送特定的BroadcastReceiverintent.setAction(com.jiahui.broadcast.mybroadcast);/帶一些消息內(nèi)容過去intent.putExtra(msg,我發(fā)過來的數(shù)據(jù)哦);sendBroadcast(intent););實(shí)現(xiàn)成效:發(fā)送普通廣播發(fā)送普通廣播接收到的Intent的Adi??跒閏om.JIdhuLbrodcast.mybrofidcast傳遞的消息內(nèi)容為我發(fā)
11、過來的數(shù)據(jù)啜實(shí)例2:發(fā)送有序廣播寫兩個(gè)BroadcastReceiver類MyReceiver01.java:javaviewplaincopyprint?packagecom.jiahui.broadcast;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.os.Bundle;importandroid.widget.Toast;publicclassMyReceiver1extendsBroadcastReceiv
12、erpublicvoidonReceive(Contextcontext,Intentintent)System.out.println(MyReceiveU-onReceive-);StringreceiverMsg=intent.getStringExtra(msg);System.out.println(receiverMsg:+receiverMsg);Toast.makeText(context,”接收到的Intnet的action+intent.getAction()+n發(fā)過來的消息內(nèi)容:+receiverMsg,5000).show();Bundlebundle=newBundl
13、e();bundle.putString(first,第一個(gè)廣播接收者給的數(shù)據(jù));/放入下一個(gè)結(jié)果中,讓下一個(gè)廣播接收者收到消息setResultExtras(bundle);javaviewplaincopyprint?packagecom.jiahui.broadcast;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.os.Bundle;importandroid.widget.Toast;publicclass
14、MyReceiver2extendsBroadcastReceiverOverridepublicvoidonReceive(Contextcontext,Intentintent)System.out.println(-MyReceiver2-onReceive-);取到結(jié)果Bundlebundle=getResultExtras(true);StringreceiverMsg=bundle.getString(first);System.out.println(receiverMsg:+receiverMsg);Toast.makeText(context,”接收到的Intnet的acti
15、on+intent.getAction()+n發(fā)過來的消息內(nèi)容:+receiverMsg,5000).show();在中文件注冊,同時(shí)設(shè)置為優(yōu)先級htmlviewplaincopyprint?11.注意:那個(gè)地址兩個(gè)廣播接收者設(shè)置的action是一樣開發(fā)Activity在Activity中發(fā)送有序廣播消息javaviewplaincopyprint?packagecom.jiahui.broadcast;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.vi
16、ew.View;importandroid.widget.Button;publicclassBroadcastDemo2ActivityextendsActivitypublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.main);ButtonbtnSend=(Button)this.findViewById(R.id.btnSend);btnSend.setOnClickListener(newView.OnClickListener()O
17、verridepublicvoidonClick(Viewv)20.Intentintent=newIntent();intent.setAction(com.jiahui.broadcast.myreceiver););intent.putExtra(msg,發(fā)給第一個(gè)接收者的數(shù)據(jù)發(fā)送有序廣播sendOrderedBroadcast(intent,null););實(shí)現(xiàn)成效:發(fā)送有序廣播接收到的Intnet的actionmmJlBhuLbroadcast.myreceIver發(fā)過來的消息內(nèi)容:發(fā)皓第一個(gè)接收者的數(shù)據(jù)當(dāng)一段時(shí)刻咱們就能夠夠看到又會彈出一個(gè)信息如以下圖:也能夠通過操縱臺監(jiān)視:11-140733pl-1407.3J11-14073111-14073JrSyste號?營taSystereceiverMsg發(fā)愴采一個(gè)幫收卷的數(shù)據(jù)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電機(jī)學(xué)課件-清華大學(xué)
- 2024年全新裝修設(shè)計(jì)合作協(xié)議2篇
- 廣西大學(xué)附屬中學(xué)消防講座課件張琳敏課件
- 房屋擔(dān)保租賃合同(2篇)
- 2024年互聯(lián)網(wǎng)租賃平臺自行車退租退款及押金返還協(xié)議3篇
- 2025年貴州貨運(yùn)從業(yè)資格考試模擬考試題庫及答案解析
- 2025年福州貨運(yùn)從業(yè)資格試題答案解析
- 2025年武漢貨運(yùn)從業(yè)資格證考試模擬考試題及答案
- 2025年克拉瑪依b2考貨運(yùn)資格證要多久
- 2025年塔城貨運(yùn)資格證培訓(xùn)考試題
- 古詩詞誦讀《客至》課件+2023-2024學(xué)年統(tǒng)編版高中語文選擇性必修下冊
- 統(tǒng)編四上《中國古代神話故事》導(dǎo)讀課教學(xué)設(shè)計(jì)含反思
- 2024秋期國家開放大學(xué)本科《合同法》一平臺在線形考(任務(wù)1至4)試題及答案
- 碳排放管理員(中級)職業(yè)鑒定考試題及答案
- 期權(quán)合同模板三篇
- 陜西延長石油集團(tuán)招聘筆試題庫2024
- 人教版2024七年級英語上冊全冊單元重點(diǎn)詞匯綜合訓(xùn)練
- 北京市2024年中考英語真題【附參考答案】
- 醫(yī)療機(jī)構(gòu)病歷管理規(guī)定(2024 年版)
- 高中英語外研版 單詞表 必修2
- 某大學(xué)中醫(yī)學(xué)(專升本)學(xué)士學(xué)位考試復(fù)習(xí)題
評論
0/150
提交評論