今天做項(xiàng)目時(shí)遇到了一個(gè)問題是同一個(gè)項(xiàng)目中兩個(gè)不同的activity之間想要進(jìn)行事件監(jiān)聽,也就是A_activity里面有了操作之后,另一個(gè)B_activity里面要馬上做出改變。如果想要監(jiān)聽,就必須得到那個(gè)activity的對(duì)象,但顯然這是沒法做到的。
首先想到了四大組件中的廣播,通過發(fā)送廣播sendBroadcast()就可以讓兩個(gè)毫無關(guān)系的activity產(chǎn)生監(jiān)聽聯(lián)系。但是寫好代碼運(yùn)行之后發(fā)現(xiàn)沒有達(dá)到預(yù)想中的效果,分析后就發(fā)現(xiàn)不是代碼寫錯(cuò)了,而是發(fā)送普通的廣播根本無法達(dá)到效果。因?yàn)?,廣播是在B_activity的oncreate()方法中注冊(cè)的,也就是說只有進(jìn)入了B界面的時(shí)候廣播才能被注冊(cè),而這時(shí)候A界面的廣播明顯已經(jīng)發(fā)送完成。sendBroadcast()也叫及時(shí)廣播,也就是只有在發(fā)送廣播時(shí)已經(jīng)注冊(cè)了的廣播接受者才能收到廣播。
這時(shí)候想起聽過但是沒用過的sendStickyBroadcast()(不知道是否可以翻譯為粘性廣播?)。這個(gè)廣播的特性就在于它會(huì)一直保留,不管是在發(fā)送前注冊(cè)的還是發(fā)送后注冊(cè)的接收者都可以收到廣播。用法則和sendBroadcast()一樣。試驗(yàn)過后發(fā)現(xiàn)果然可行。
接著,又一個(gè)問題來了,運(yùn)行發(fā)現(xiàn)每進(jìn)入到B_activity都能收到該廣播,但我只需要收到一次就可。于是在想,根據(jù)這種廣播的特性,應(yīng)該有提供消除廣播的方法吧。在網(wǎng)上搜索之后發(fā)現(xiàn)果然有可以消除的方法,也就是:removeStickyBroadcast(intent),通過括號(hào)中的參數(shù)intent的action來區(qū)分要消除的是哪個(gè)廣播。
這樣,在oncreate()或onStart()方法中注冊(cè)廣播接收者,在onStop()方法中取消注冊(cè)廣播接收者并移除之前發(fā)送的粘性廣播即可達(dá)到想要的效果。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞標(biāo)題:StickyBroadcast-創(chuàng)新互聯(lián)
URL地址:http://www.rwnh.cn/article0/djphio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、做網(wǎng)站、微信公眾號(hào)
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容