0

У меня есть широковещательный приемник в одноэлементном классе, который не принимает трансляции.BroadcastReceiver в классе Singleton не получает намерений

Singleton инициализируется контекстом (то есть getInstance (контекст)).

Я вызываю getContext(). SendBroadcast (намерение); но BroadcastReceiver ничего не получает. Я подтвердил, что фильтры соответствия совпадают.

Как я зарегистрировать приемник в моем одноплодном конструкторе как так

private class Singleton(Context context) { 
    context.registerReceiver(mReceiver, INTENT_FILTER); 
.... 

private onDestroy(Context context) { 
    context.unregisterReceiver(mReceiver); 
.... 

Что происходит !?

ответ

2

ОК, поэтому я понял, что я сделал не так. Синглтон создается активностью, и, следовательно, контекст, передаваемый в, представляет собой контекст активности . Поэтому мне нужно обновить мой конструктор этого:

private class Singleton(Context context) { 
    context.getApplicationContext().registerReceiver(mReceiver, INTENT_FILTER); 

Не знаю, почему это делает разницу. Я предполагаю, что контекст активности разрушен и, следовательно, BroadcastReceiver с ним? Дополнительное понимание приветствуется!

Смежные вопросы