При регистрации кода можно написать приемник вещания как внутренний класс в Activity, а можно переписать класс, унаследованный от BroadCastReceiver, который нужно зарегистрировать с помощью кода (зарегистрированный приемник можно прописать в любом месте, только зарегистрированные приемники вещания могут получить его) Соответствующая широковещательная рассылка), например регистрация широковещательных приемников в onCreate или onResume в Activity и отмена регистрации широковещательных приемников в onDestory, этот метод регистрации также называется динамической регистрацией. Этот метод можно понимать как трансляцию, зарегистрированную через код, связанную с регистрантом.
Точно так же сначала создайте широковещательный приемник, такой как MyReceiver03.
Переопределите метод onCreate, динамически зарегистрируйте MyReceiver03, добавьте атрибут действия (тот же канал) в фильтр намерений и добавьте объект MyReceiver03 и фильтр намерений с помощью метода registerReceiver.
Во время динамической регистрации, чтобы сохранить системные ресурсы и предотвратить постоянный мониторинг широковещательных приемников, вы можете выйти из системы. Переопределите метод onDestroy(), чтобы отменить регистрацию MyReceiver03 через unregisterReceiver.
При выходе выйдите из MyReceiver03
Основной код выглядит следующим образом:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 动态注册广播3 MyReceiver03
// 获得 MyReceiver03的对象
myReceiver03 = new MyReceiver03();
// 创建意图过滤器
IntentFilter intentFilter = new IntentFilter();
// 向意图过滤器中添加action属性
String action = MY_ACTION;
intentFilter.addAction(action);
// 动态注册
registerReceiver(myReceiver03,intentFilter);
}
// Activity销毁时,注销广播
@Override
protected void onDestroy() {
super.onDestroy();
// 注销
unregisterReceiver(myReceiver03);
Toast.makeText(this,"myReceiver03广播被注销了",Toast.LENGTH_SHORT).show();
}