Я должен проверить, регистрируется ли мой зарегистрированный получатель все еще, если не, как я проверяю его какие-либо методы?
Я не уверен, что API предоставляет API напрямую, если вы рассмотрите этот поток :
Мне было интересно то же самое.
В моем случае у меня есть реализацияBroadcastReceiver
, которая вызываетContext # unregisterReceiver (BroadcastReceiver)
, передавая себя в качестве аргумента после обработки намерения что он получает.
Существует небольшая вероятность того, что метод получателяonReceive (Context, Intent)
вызывается более одного раза, поскольку он зарегистрирован с несколькимиIntentFilters
, что создает возможность возникновения исключенияIllegalArgumentException
изContext # unregisterReceiver (BroadcastReceiver)
.В моем случае я могу сохранить частный синхронизированный член для проверки перед вызовом
Context # unregisterReceiver (BroadcastReceiver)
, но было бы намного чище, если бы API предоставлял метод проверки.
Нет функции API для проверки регистрации получателя. Обходной путь — поместить код в блок try catch, как показано ниже.
try {
//Register or UnRegister your broadcast receiver here
} catch(IllegalArgumentException e) {
e.printStackTrace();
}