Подтвердить что ты не робот

Как я могу уведомить текущую активность от широковещательного приемника?

У меня есть активность, она должна отвечать на широковещательное событие. Поскольку действие не может быть широковещательным приемником одновременно, Я сделал широковещательный приемник.

Мой вопрос: как я могу уведомить об этом активность от широковещательного приемника? Я считаю, что это обычная ситуация, так есть шаблон дизайна для этого?

4b9b3361

Ответ 1

Трансляция - это уведомление.:) Если вы хотите сказать, начать работу или услугу и т.д. На основе полученной широковещательной передачи, вам нужен автономный широковещательный приемник, и вы поместите его в свой файл манифеста. Однако, если вы хотите, чтобы ваша деятельность сама отвечала на трансляции, вы создаете экземпляр широковещательного приемника в своей деятельности и регистрируете его там.

Я использую шаблон:

public class MyActivity extends Activity {
    private BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(...) {
            ...
        }
   });

    public void onResume() {
        super.onResume();

        IntentFilter filter = new IntentFilter();
        filter.addAction(BROADCAST_ACTION);

        this.registerReceiver(this.receiver, filter);
    }

    public void onPause() {
        super.onPause();

        this.unregisterReceiver(this.receiver);
    }
}

Итак, таким образом получатель создается при создании класса (также может быть в onCreate). Затем в onResume/onPause я обрабатываю регистрацию и регистрацию получателя. Затем в методе reciever onReceive я делаю все, что необходимо, чтобы заставить реакцию реагировать так, как я хочу, когда она получает широковещательную передачу.