Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Android: broadcast receiver, on receive, go async, pending result, foreground service

Что такое BroadcastReceiver и как продлить время его жизни?

Этот вопрос проверяет умение работать с короткоживущими приёмниками и обходить ограничения системы.

Короткий ответ

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.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Android

    Android

Ключевые слова

#broadcast receiver

#on receive

#go async

#pending result

#foreground service

Подпишись на Android Developer в телеграм