Как проверить, регистрируется ли Получатель в Android?

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

236
задан Nikita G. 11 August 2016 в 06:44
поделиться

2 ответа

Я не уверен, что API предоставляет API напрямую, если вы рассмотрите этот поток :

Мне было интересно то же самое.
В моем случае у меня есть реализация BroadcastReceiver , которая вызывает Context # unregisterReceiver (BroadcastReceiver) , передавая себя в качестве аргумента после обработки намерения что он получает.
Существует небольшая вероятность того, что метод получателя onReceive (Context, Intent) вызывается более одного раза, поскольку он зарегистрирован с несколькими IntentFilters , что создает возможность возникновения исключения IllegalArgumentException из Context # unregisterReceiver (BroadcastReceiver) .

В моем случае я могу сохранить частный синхронизированный член для проверки перед вызовом Context # unregisterReceiver (BroadcastReceiver) , но было бы намного чище, если бы API предоставлял метод проверки.

63
ответ дан 23 November 2019 в 03:26
поделиться

Нет функции API для проверки регистрации получателя. Обходной путь — поместить код в блок try catch, как показано ниже.

try {

 //Register or UnRegister your broadcast receiver here

} catch(IllegalArgumentException e) {

    e.printStackTrace();
}
296
ответ дан 23 November 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: