Android面试,BroadCastReceiver的两种注册方式的异同
在Android手機(jī)應(yīng)用程序中開(kāi)發(fā)中,需要用到BroadcastReceiver來(lái)監(jiān)聽(tīng)廣播的消息。在自定義好BroadcastReceiver ,需要對(duì)其進(jìn)行注冊(cè),注冊(cè)有兩種方法:
一種是在代碼當(dāng)中注冊(cè),注冊(cè)的方法是registerReceiver(receiver,filter)(用Activity的實(shí)例來(lái)調(diào)用),取消注冊(cè)的方法:unregisterReceiver(receiver),如果一個(gè)BroadcastReceiver用于更新UI(User Interface),那么通常會(huì)使用這種方法進(jìn)行注冊(cè),在Activity啟動(dòng)的時(shí)候進(jìn)行注冊(cè),在Activity不可見(jiàn)后取消注冊(cè);
另一種就是在AndroidManifest當(dāng)中進(jìn)行注冊(cè)。
使用代碼進(jìn)行注冊(cè)????????????????????????????????????????????????????????????????????
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); IncomingSMSReceiver receiver = new IncomingSMSReceiver(); registerReceiver(receiver, filter);在AndroidManifest.xml文件中的<application>節(jié)點(diǎn)里進(jìn)行注冊(cè)???????????????????
<receiver android:name=".IncomingSMSReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>注冊(cè)完之后即可以發(fā)送廣播,使用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()來(lái)實(shí)現(xiàn),接收端代碼:
public class IncomingSMSReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //todo...接收廣播,做自己的業(yè)務(wù) } }區(qū)別???????????????????????????????????????????????????????????????????????????????????
- 在AndroidManifest中進(jìn)行注冊(cè)后,不管改應(yīng)用程序是否處于活動(dòng)狀態(tài),都會(huì)進(jìn)行監(jiān)聽(tīng),比如某個(gè)程序時(shí)監(jiān)聽(tīng) 內(nèi)存 的使用情況的,當(dāng)在手機(jī)上安裝好后,不管改應(yīng)用程序是處于什么狀態(tài),都會(huì)執(zhí)行改監(jiān)聽(tīng)方法中的內(nèi)容。
在代碼中進(jìn)行注冊(cè)后,當(dāng)應(yīng)用程序關(guān)閉后,就不再進(jìn)行監(jiān)聽(tīng)。我們讀知道,應(yīng)用程序是否省電,決定了該應(yīng)用程序的受歡迎程度,所以,對(duì)于那些沒(méi)必要在程序關(guān)閉后仍然進(jìn)行監(jiān)聽(tīng)的Receiver,在代碼中進(jìn)行注冊(cè),無(wú)疑是一個(gè)明智的選擇。
我是天王蓋地虎的分割線?????????????????????????????????????????????????????????????
?
總結(jié)
以上是生活随笔為你收集整理的Android面试,BroadCastReceiver的两种注册方式的异同的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenDDS 编译
- 下一篇: 三星note9刷Android9,三星N