Как отменить регистрацию нескольких приемников вещания, которые находятся в разных классах одновременно? - PullRequest
0 голосов
/ 06 декабря 2018

Я хочу отменить регистрацию некоторых широковещательных приемников одним щелчком мыши. Вот поток. Допустим, в Деятельности A у меня ниже широковещательных приемников.

    public BroadcastReceiver upload = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

        }
    };

 public BroadcastReceiver download = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

        }
    };

, а в Деятельности B у меня ниже широковещательных приемников

 public BroadcastReceiver wifi = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

        }
    };

 public BroadcastReceiver data = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {

        }
    };

Моя проблема в том, что я хочу отменить регистрацию всех этих BroadcastReceiver в Activity C одним нажатием кнопки.Как я могу это сделать?и как я могу проверить, зарегистрирован ли получатель или нет ..?

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Сохранение регистрации приемника вещания даже после того, как активность выходит за пределы экрана, это утечка памяти, и вы не должны этого делать.

Всегда регистрируйте приемники вещания в onStart / onCreate / onResume и отменяйте их регистрацию в onStop / onDestroy / onPause.

Почему вы должны поддерживать приемник активным даже в том случае, если активность выходит за пределы экрана?Вы также можете использовать службу Android, если хотите, чтобы что-то выполнялось вне области действия.

0 голосов
/ 06 декабря 2018
  1. Создайте интерфейс в вашем действии C с помощью метода unresisterRegisters ()
  2. Реализуйте этот интерфейс в действии A и B. Переопределите метод и напишите код для незарегистрированных получателей
  3. createОбъект A и B в Деятельности C внутри OnButton щелкает и вызывает метод unresisterRegisters () с обоими методами.

Надеюсь, это поможет Вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...