BroadCastReceiver用于監(jiān)聽(tīng)被廣播的事件(Itent)
為了達(dá)到這個(gè)目的,我們就必須進(jìn)行BroadCastReceiver注冊(cè),注冊(cè)共兩種方法:
<1>在應(yīng)用程序代碼中進(jìn)行注冊(cè)
這種注冊(cè)方法比較靈活,我們想什么時(shí)候注冊(cè)就什么時(shí)候注冊(cè),什么時(shí)候關(guān)閉就什么時(shí)候關(guān)閉。
注冊(cè)BroadCastReceiver:
registerReeiver(receiver,filter)
取消BroadCastReceiver:
unregisterReeiver(receiver)
如果一個(gè)BroadCastReciver用于更新UI,通常會(huì)使用這種方法進(jìn)行注冊(cè),Activity啟動(dòng)時(shí)就注冊(cè)BroadCastReciver,Activity不可見(jiàn)時(shí)就取消注冊(cè)。
步驟:1 生成一個(gè)BroadCastReceiver對(duì)象
2 生成一個(gè)Intentfilter對(duì)象
3 為Intentfilter對(duì)象添加一個(gè)Action
<2>在AndroidManifest.xml當(dāng)中進(jìn)行注冊(cè)
用這種方法注冊(cè)的有如下一種特點(diǎn):
用這種方法注冊(cè)的應(yīng)用程序的及時(shí)關(guān)閉了,BroadCastReceiver依然會(huì)接收到廣播出的一個(gè)對(duì)象,也就是說(shuō)無(wú)論應(yīng)用程序關(guān)與開(kāi),都處于一種活動(dòng)狀態(tài)中,都接受到廣播事件。
有的應(yīng)用程序就需要這種特點(diǎn)。
例如,開(kāi)發(fā)一種應(yīng)用程序,來(lái)檢測(cè)手機(jī)的耗電量。
我們不能總要求應(yīng)用程序打開(kāi),我們希望應(yīng)用程序及時(shí)關(guān)閉了,也能照樣檢測(cè)手機(jī)的耗電量。
但是,我們?nèi)绻_(kāi)發(fā)的應(yīng)用程序來(lái)更新手機(jī)控件,采用這種方式就不太合適了。只有我們看到Activity,我們更新控件采用意義。
如果沒(méi)看到Activity還照樣更新,除了耗電,消耗內(nèi)存外,一點(diǎn)好處也沒(méi)有。所以就需要第一種方法。