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

來源:互聯網
上載者:User

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 已卸載!");           }       }   }}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.