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

Каков контекст, переданный андроидом в onReceive() BroadcastReceiver

Когда я создаю экземпляр BroadcastReceiver, и когда onReceive() вызывается инфраструктурой Android, каков контекст, переданный методу onReceive()? Это контекст активности? контекста приложения?

Спасибо.

4b9b3361

Ответ 1

Это контекст приложения.

public abstract void onReceive (Context context, Intent intent)

Ответ 2

Это контекст, в котором работает приемник. Например, если широковещательное сообщение отправлено из UsbManager, контекст является контекстом UsbManager.
Дополнительная информация: BroadcastReceiver

Ответ 3

Исторически это экземпляр ReceiverRestrictedContext, но этот класс отсутствует в последних версиях Android (не тот уровень API точно, но он не присутствует в источниках API 26), поэтому теперь это должен быть ваш контекст приложения.

ReceiverRestrictedContext не удалось зарегистрировать BroadcastReceiver из BroadcastReceiver.

Поскольку экземпляр ReceiverRestrictedContext создается каждый раз при создании экземпляра BroadcastReceiver, вы должны быть осторожны, чтобы не передавать его компоненту, имеющему жизненный цикл дольше, чем ваш (очень короткий) BroadcastReceiver, или вы бы создайте утечки памяти на этих старых (не так сильно) версиях Android, которые имеют этот ReceiverRestrictedContext.

Вы можете безопасно позвонить getApplicationContext() и передать его результат более долговечному компоненту.

Обратите внимание, что факт ReceiverRestrictedContext исчез из последних версий Android, не означает, что вы можете сделать "BroadcastReceiverCeption"!