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