Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 編程下兩種方式注冊廣播的區別

Android 編程下兩種方式注冊廣播的區別

編輯:關於Android編程

常駐型廣播

常駐型廣播,當你的應用程序關閉了,如果有廣播信息來,你寫的廣播接收器同樣的能接收到,它的注冊方式就是在你應用程序的AndroidManifast.xml 中進行注冊,這種注冊方式通常又被稱作靜態注冊。這種方式可以理解為通過清單文件注冊的廣播是交給操作系統去處理的。示例代碼如下:

 



  
      
  

 

非常駐型廣播

非常駐型廣播,當應用程序結束了,廣播自然就沒有了,比如在 Activity 中的 onCreate 或者 onResume 中注冊廣播接收者,在 onDestory 中注銷廣播接收者。這樣你的廣播接收者就一個非常駐型的了,這種注冊方式也叫動態注冊。這種方式可以理解為通過代碼注冊的廣播是和注冊者關聯在一起的。比如寫一個監聽 SDcard 狀態的廣播接收者:

package cn.sunzn.mosecurity.activity;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Environment;

public class SDcard extends Activity {
   SdcardStateChanageReceiver sdcardStateReceiver;

   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       sdcardStateReceiver = new SdcardStateChanageReceiver();
       IntentFilter filter = new IntentFilter();
       filter.addAction(Intent.ACTION_MEDIA_REMOVED);
       filter.addAction(Intent.ACTION_MEDIA_EJECT);
       filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
       filter.addDataScheme("file");
       registerReceiver(sdcardStateReceiver, filter);
   }

   protected void onDestroy() {
       unregisterReceiver(sdcardStateReceiver);
   }

   class SdcardStateChanageReceiver extends BroadcastReceiver {
       public void onReceive(Context context, Intent intent) {
           checkSDCard();
       }

       public void checkSDCard() {
           String state = Environment.getExternalStorageState();
           System.out.println(state);
           if (state.equals(Environment.MEDIA_REMOVED) || state.equals(Environment.MEDIA_UNMOUNTED)) {
               System.out.println("SDCard 已卸載!");
           }
       }
   }
}


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved