Android - вне очереди трансляция динамической регистрации трансляции

   При регистрации кода можно написать приемник вещания как внутренний класс в 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();
    }

Supongo que te gusta

Origin blog.csdn.net/weixin_48591974/article/details/127978564
Recomendado
Clasificación