1. 程式人生 > >BroadcastReceiver廣播接收者的兩種註冊方式

BroadcastReceiver廣播接收者的兩種註冊方式

廣播是android四大元件之一,在我們的應用開發中也佔據著重要的地位,我們在很多時候和很多場景中都需要使用到廣播,那麼接下來我們就說一下廣播接收者的兩種註冊方式:

第一種:在androidmanifest.xml中註冊。

在配置檔案中註冊的接收者的特點是即使應用程式已被關閉,該接收者依然可接受它感興趣的廣播,比如手機電池電量的廣播接收者,沒有必要將某個程式開啟。

程式碼如下:

下面是執行程式碼:傳送廣播!!
//模擬撥打電話廣播
public class MainActivity extends Activity  
{  
  
    @Override  
    public void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main); 
        //使用intent來傳遞廣播,初始化一個物件
        Intent intent = new Intent();
        //"android.intent.action.CALL"是識別符號,用來識別哪些廣播可以接受到我傳送的廣播訊息
        intent.setAction("android.intent.action.CALL"); 
        //傳送廣播
        this.sendBroadcast(intent);  
    }  
}  
下面是廣播接收者,新建一個類,繼承BroadcastReceiver:
// 廣播接收者
	class Secnd_Recevier extends BroadcastReceiver {

		@Override
		public void onReceive(Context context, Intent intent) {
			Bundle bundle = intent.getExtras();
			// 夜間模式
			queryNightModes.nightModes(sp,view);

		}

	}
傳送者傳送廣播後,廣播接收者就可以收到廣播,然後就可以在onReceive(Context context, Intent intent)方法中做想要的操作了! 第二種:動態註冊。在Activity中繫結接收者必須依附該應用程式存在,或者一個BroadcastReceiver用於更新UI,就沒有必要再程式關閉時接收者還執行,故無需在
AndroidManifest.xml中註冊而可以放在Activity中註冊。 程式碼如下: 新建一個類,繼承BroadcastReceiver:
// 廣播接收者
	class Secnd_Recevier extends BroadcastReceiver {

		@Override
		public void onReceive(Context context, Intent intent) {
			Bundle bundle = intent.getExtras();
			// 夜間模式
			queryNightModes.nightModes(sp,view);

		}

	}
然後在程式碼中註冊
   public class MainActivity extends Activity{  
     
    @Override  
    public void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main); 
         // 註冊廣播接收者
		Secnd_Recevier secnd_Recevier = new Secnd_Recevier();
		IntentFilter intentFilter = new IntentFilter("nightMode");
		registerReceiver(secnd_Recevier, intentFilter);
    }  
        
        
       
然後再發送者哪裡傳送廣播,接收者就可以接收到啦!當然傳送者和接收者的識別符號必須一致哦!