Этот вопрос проверяет умение работать с короткоживущими приёмниками и обходить ограничения системы.
BroadcastReceiver — компонент, который получает Intent кратковременно в onReceive. По умолчанию после завершения метода система убивает процесс или освобождает ресурсы. Чтобы продлить время, внутри onReceive можно вызвать goAsync() и получить PendingResult, затем выполнить асинхронную работу в другом потоке и в конце вызвать pendingResult.finish(). Либо сразу стартовать Foreground Service для длительной работы.
onReceive() должен выполняться быстро (<10 с).
goAsync()
val result = goAsync()
thread {
// долгий код
result.finish()
}Foreground Service
Стартуется через startForegroundService из onReceive.
WorkManager
Планирует задачу независимо от жизненного цикла Receiver.