1、// 可通過(guò)Intent攜帶消息 intent.putExtra(msg, 發(fā)送廣播);// 發(fā)送廣播消息 sendBroadcast(intent);(三)、注銷BroadcastReceiver:一般在onStart中注冊(cè)BroadcastReceiver,在onStop中取消BroadcastReceiver。
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到五峰網(wǎng)站設(shè)計(jì)與五峰網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋五峰地區(qū)。
2、在activity_main.xml文件創(chuàng)建一個(gè)用于發(fā)送廣播的按鈕 首先通過(guò)本地廣播管理器LocalBroadcastManager的getInstance()方法獲取一個(gè)實(shí)例,并分別創(chuàng)建過(guò)濾器IntentFilter和自定義接收器LocalReceiver的實(shí)例。
3、發(fā)送廣播是在Activity或Service中調(diào)用 sendBroadcast() 方法,而Activity或Service都間接繼承于Context抽象類,真正干活是交給ContextImpl類。
4、廣播機(jī)制最大的特點(diǎn)就是發(fā)送方并不關(guān)心接收方是否接到數(shù)據(jù),也不關(guān)心接收方是如何處理數(shù)據(jù)的。Android中廣播的是操作系統(tǒng)中產(chǎn)生的各種各樣的事件。例如,收到一條短信就會(huì)產(chǎn)生一個(gè)收到短信息的事件。
5、這個(gè)需要有后臺(tái)記錄。 用戶打開應(yīng)用后,將手機(jī)連接的WIFI設(shè)備的MAC地址傳給后臺(tái)。 關(guān)閉應(yīng)用時(shí)也同步給后臺(tái)修改狀態(tài)。由后臺(tái)統(tǒng)計(jì)出同個(gè)wifi下面打開軟件的用戶,傳給前端展示。
6、BroadcastReceiver(廣播接收器)是Android四大組件之一,顧名思義,通過(guò)廣播的方式進(jìn)行消息傳遞,其本質(zhì)是一個(gè)全局的監(jiān)聽(tīng)器,可以監(jiān)聽(tīng)到各種廣播,可以用來(lái)實(shí)現(xiàn)不同組件之間的通信。
1、④:sendBroadcast(myIntent);——【發(fā)送廣播】接收廣播 Android在接收廣播的方法是注冊(cè)一個(gè)廣播接收器 registerReceiver(MyReceiver,IntentFilter)。①:首先創(chuàng)建MyReceiver類(類名自定義) 繼承 BroadcastReceiver類。
2、發(fā)送有序廣播的方法是通過(guò)sendOrderedMyBroadcast。設(shè)置優(yōu)先級(jí)廣播接收者的優(yōu)先級(jí)。設(shè)計(jì)界面交互代碼。創(chuàng)建三個(gè)廣播接收者。在清單文件中注冊(cè)即可。
3、發(fā)送廣播是在Activity或Service中調(diào)用 sendBroadcast() 方法,而Activity或Service都間接繼承于Context抽象類,真正干活是交給ContextImpl類。
4、無(wú)序廣播存儲(chǔ)在mParallelBroadcasts中, 系統(tǒng)會(huì)遍歷這個(gè)集合并將其中的廣播發(fā)送給他們所有的接收者, 具體的發(fā)送過(guò)程是通過(guò)deliverToRegisteredReceiverLocked()方法實(shí)現(xiàn)。
1、如果要做耗時(shí)操作,應(yīng)該通過(guò)發(fā)送Intent給Service,讓Service來(lái)完成。廣播不能使用子線程來(lái)解決,因?yàn)锽roadcastReceiver的生命周期很短,子線程還沒(méi)結(jié)束,Broadcast可能就結(jié)束了。
2、在這里我們創(chuàng)建一個(gè)繼承于BroadcastReceiver的類LocalReceiver。
3、無(wú)序廣播存儲(chǔ)在mParallelBroadcasts中, 系統(tǒng)會(huì)遍歷這個(gè)集合并將其中的廣播發(fā)送給他們所有的接收者, 具體的發(fā)送過(guò)程是通過(guò)deliverToRegisteredReceiverLocked()方法實(shí)現(xiàn)。
4、④:sendBroadcast(myIntent);——【發(fā)送廣播】接收廣播 Android在接收廣播的方法是注冊(cè)一個(gè)廣播接收器 registerReceiver(MyReceiver,IntentFilter)。①:首先創(chuàng)建MyReceiver類(類名自定義) 繼承 BroadcastReceiver類。
首先通過(guò)本地廣播管理器LocalBroadcastManager的getInstance()方法獲取一個(gè)實(shí)例,并分別創(chuàng)建過(guò)濾器IntentFilter和自定義接收器LocalReceiver的實(shí)例。
由此可見(jiàn),廣播最快的情況是前臺(tái)廣播、無(wú)序廣播、動(dòng)態(tài)注冊(cè)廣播接收器。最糟糕的情況是:后臺(tái)廣播、有序或靜態(tài)注冊(cè)廣播接收器、廣播接收器優(yōu)先級(jí)低。如果一個(gè)應(yīng)用只是簡(jiǎn)單的靠注冊(cè)一個(gè)靜態(tài)廣播接收器拉起進(jìn)程,對(duì)應(yīng)的正是最糟糕的情況。
Android 是在 進(jìn)程間通信機(jī)制的基礎(chǔ)上實(shí)現(xiàn)的,內(nèi)部基于消息發(fā)布和訂閱的事件驅(qū)動(dòng)模型,廣播發(fā)送者負(fù)責(zé)發(fā)送消息,廣播接收者需要先訂閱消息,然后才能收到消息。
Android中廣播的是操作系統(tǒng)中產(chǎn)生的各種各樣的事件。例如,收到一條短信就會(huì)產(chǎn)生一個(gè)收到短信息的事件。而Android操作系統(tǒng)一旦內(nèi)部產(chǎn)生了這些事件,就會(huì)向所有的廣播接收器對(duì)象來(lái)廣播這些事件。
這個(gè)問(wèn)題我遇到過(guò),實(shí)現(xiàn)上一個(gè)接收器只會(huì)接收一次,你接收了多次是因?yàn)槟銓?shí)現(xiàn)上new 了多個(gè)receiver。
當(dāng)此App首次啟動(dòng)時(shí),系統(tǒng)會(huì)自動(dòng)實(shí)例化MyBroadcastReceiver,并注冊(cè)到系統(tǒng)中。 之前常說(shuō):靜態(tài)注冊(cè)的廣播接收器即使app已經(jīng)退出,主要有相應(yīng)的廣播發(fā)出,依然可以接收到,但此種描述自Android 1開始有可能不再成立,具體分析詳見(jiàn)本文后面部分。
分享標(biāo)題:android廣播收發(fā) 安卓廣播發(fā)送和接收
網(wǎng)頁(yè)地址:http://chinadenli.net/article9/dijpdoh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、標(biāo)簽優(yōu)化、企業(yè)網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)公司、自適應(yīng)網(wǎng)站、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)