android监听器作用,android - 监听器和接收器(Android)有什么区别?
例如,我需要一個(gè)BroadcastReceiver來(lái)獲取這些事件:
重新啟動(dòng)或關(guān)機(jī)
屏幕開(kāi)或關(guān)
電池狀態(tài)(電壓,接通電源,溫度)
物理按鈕按下(相機(jī),媒體等)
但是我需要監(jiān)聽(tīng)器來(lái)獲取以下事件:
用于傳感器事件(加速度,磁場(chǎng),方向,接近度,溫度,光照水平等)的EventListener
用于位置事件的LocationListener(網(wǎng)絡(luò)位置,GPS)
似乎接收方和監(jiān)聽(tīng)方都存在,以便我可以接收事件。除了明顯的語(yǔ)義差異之外,兩者之間還有什么區(qū)別?我可以在其中一項(xiàng)上做其他事情,而不能在另一項(xiàng)上做,尤其是在屏幕關(guān)閉時(shí)我可以占用并運(yùn)行多少CPU方面?為什么出于接收事件的目的有兩種完全不同的構(gòu)造?
最佳答案
兩者之間的差異如此之多,它們對(duì)某些事物的回應(yīng)是唯一的相似之處之一。
差異:
BroadcastReceivers接收Intent,而Listener基本上可以做任何事情,因?yàn)樗鼪](méi)有定義的目的,所以只是一個(gè)命名約定。例如,在開(kāi)發(fā)人員網(wǎng)站上搜索"BroadcastReceiver",然后搜索"Listener"
BroadcastReceivers剛收到一個(gè)非直接的Intent Broadcast,監(jiān)聽(tīng)器被顯式調(diào)用。
BroadcastReceiver是它自己定義的類(lèi),因?yàn)樗哂忻鞔_的目的(接收Intent),而監(jiān)聽(tīng)器可以是任何東西-它們通常是interface,并且提供它們是為了使回調(diào)可以從一個(gè)類(lèi)到另一個(gè)類(lèi)進(jìn)行。
BroadcastReceivers通常用于全局的系統(tǒng)范圍的事件,特定事件的監(jiān)聽(tīng)器(即,位置傳感器除非有某些東西(例如要向其發(fā)布的監(jiān)聽(tīng)器),否則不應(yīng)該每秒發(fā)送一次位置更新。 -這很重要,它影響到一切,因此應(yīng)廣播給所有感興趣的接收者。
事件BroadcastReceiver接收的事件通常是非連續(xù)事件(一次觸發(fā)),而監(jiān)聽(tīng)器(取決于它們的工作)可以將用于持續(xù)更新(連續(xù))。 如果在 list 中聲明了
BroadcastReceivers,則系統(tǒng)可以將其實(shí)例化。僅動(dòng)態(tài)創(chuàng)建監(jiān)聽(tīng)器(因此通過(guò)代碼)。
CPU/功耗的使用取決于兩者的實(shí)現(xiàn),尤其是因?yàn)槿缟纤?#xff0c;監(jiān)聽(tīng)器可以是或。
Are there things I can do in one but not the other, especially in regards to things like how much CPU I can take and running while the screen is off?
BroadcastReceivers僅具有10 seconds of guaranteed execution time。監(jiān)聽(tīng)器沒(méi)有特定的用途,因此沒(méi)有此限制。
您肯定無(wú)法從BroadcastReceiver做的事情:
In particular, you may not show a dialog or bind to a service from
within a BroadcastReceiver.
可能還有更多-這就是我想出的。
總結(jié)
以上是生活随笔為你收集整理的android监听器作用,android - 监听器和接收器(Android)有什么区别?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php项目课题,php课题
- 下一篇: android handle 阻塞,An