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