Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> [Android面試題-8] BroadCastReceiver的兩種注冊方式的異同

[Android面試題-8] BroadCastReceiver的兩種注冊方式的異同

編輯:關於Android編程

 在Android手機應用程序中開發中,需要用到BroadcastReceiver來監聽廣播的消息。在自定義好BroadcastReceiver ,需要對其進行注冊,注冊有兩種方法,一種是在代碼當中注冊,注冊的方法是registerReceiver(receiver,filter)(用Activity的實例來調用),取消注冊的方法:unregisterReceiver(receiver),如果一個BroadcastReceiver用於更新UI(User Interface),那麼通常會使用這種方法進行注冊,在Activity啟動的時候進行注冊,在Activity不可見後取消注冊;另一種就是在 AndroidManifest當中進行注冊。   下面簡單的看一下兩種注冊方式: 第一種:使用代碼進行訂閱 [java]   IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");   IncomingSMSReceiver receiver = new IncomingSMSReceiver();   registerReceiver(receiver, filter);     第二種:在AndroidManifest.xml文件中的<application>節點裡進行訂閱: [html]   <receiver android:name=".IncomingSMSReceiver">       <intent-filter>            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>       </intent-filter>   </receiver>     注冊完之後即可以發送廣播,使用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()來實現,接收端代碼: [java]   public class IncomingSMSReceiver extends BroadcastReceiver {          @Override          public void onReceive(Context context, Intent intent) {                 //todo...接收廣播,做自己的業務   }   }     以上完成了廣播的注冊、發送和接收處理的過程,其中包含了注冊廣播的兩種方式,接下來討論一下兩種廣播注冊方式的區別:         區別:         在AndroidManifest中進行注冊後,不管改應用程序是否處於活動狀態,都會進行監聽,比如某個程序時監聽 內存 的使用情況的,當在手機上安裝好後,不管改應用程序是處於什麼狀態,都會執行改監聽方法中的內容。         在代碼中進行注冊後,當應用程序關閉後,就不再進行監聽。我們讀知道,應用程序是否省電,決定了該應用程序的受歡迎程度,所以,對於那些沒必要在程序關閉後仍然進行監聽的Receiver,在代碼中進行注冊,無疑是一個明智的選擇。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved