BroadcastReceiver廣播接收者的兩種註冊方式
阿新 • • 發佈:2019-01-05
廣播是android四大元件之一,在我們的應用開發中也佔據著重要的地位,我們在很多時候和很多場景中都需要使用到廣播,那麼接下來我們就說一下廣播接收者的兩種註冊方式:
第一種:在androidmanifest.xml中註冊。
在配置檔案中註冊的接收者的特點是即使應用程式已被關閉,該接收者依然可接受它感興趣的廣播,比如手機電池電量的廣播接收者,沒有必要將某個程式開啟。
程式碼如下:
下面是執行程式碼:傳送廣播!!下面是廣播接收者,新建一個類,繼承BroadcastReceiver://模擬撥打電話廣播 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); } }
// 廣播接收者
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,就沒有必要再程式關閉時接收者還執行,故無需在// 廣播接收者
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); }