Длительные операции в методе onReceive(). В чем их особенность?

Выполнять длительные операции в методе onReceive() не стоит.

Дело в том, что если приложение не запущено, а ресивер принял какой-то броадкаст (это был статически зарегистрированный ресивер), то система запустит приложение (при этом не запустит активити, то есть приложение будет работать в фоне) и вызовет метод onReceive() вашего ресивера. Данный метод исполняется на главном потоке и поэтому должен исполняться быстро. В то же время, не стоит запускать новый поток или фоновый сервис из метода onReceive(), потому что если в это время от приложения будет активен только ресивер, то после исполнения onReceive() система может убить весь процесс приложения, чтобы освободить ОЗУ, при этом будет уничтожен и поток/сервис.

Есть 2 способа, которые Google рекомендует использовать, чтобы выполнить какую-либо длительную операцию в onReceive()

  1. Использовать метод goAsync() внутри метода onReceive(). Вызов goAsync() в методе onReceive() сохраняет броадкаст активным после возврата из onReceive(). Но даже с использованием метода goAsync() система ожидает, что вы закончите операцию очень быстро и поэтому жизнь ресивера ограничивается 10 секундами
  2. Использовать JobScheduler

От нуля до работы за 10 месяцев

Обучающая платформа AndroidSprint

Выберите трек Android, Backend или QA. Дорожная карта от основ до Junior с менторской поддержкой на каждом этапе

  • Дорожная карта: чёткий план от азов до трудоустройства — знаете, что делать дальше
  • Менторы: код-ревью на каждое задание и карьерные консультации
  • Результат: портфолио из проектов и поддержка при поиске работы
Выбрать трек →
От нуля до работы за 10 месяцев AndroidSprint — обучающая платформа
Выбрать трек →

Бесплатная диагностика с сениор разработчиком

Запишитесь на консультацию — перезвоним в рабочие часы

Или свяжитесь удобным способом

Вам также может быть интересно

Узнать подробнее
Курс AndroidSprint

Глубокое обучение Android разработке с 0 до получения оффера. Только персональная практика с гарантией получения продуктового опыта.

Курс AndroidSprint - Глубокое <strong>обучение Android разработке с 0 до получения оффера</strong>. Только персональная практика с гарантией получения продуктового опыта.
Узнать подробнее
Узнать подробнее
Практикум по Kotlin

Изучение Котлин с 0 для профессиональной разработки. Личный ментор и разбор кода задач через git-flow.

Практикум по Kotlin - Изучение Котлин <strong>с 0 для профессиональной разработки</strong>. Личный ментор и разбор кода задач через git-flow.
Узнать подробнее
Узнать подробнее
Бесплатные уроки по Kotlin разработке

Самостоятельное освоение базы по языку для дальнейшего развития в Android/back-end разработке или в автотестах.

Бесплатные уроки по Kotlin разработке - <span>Самостоятельное освоение базы по языку для дальнейшего развития в Android/back-end разработке или в автотестах.</span>
Узнать подробнее
Узнать подробнее
Onboarding в разработку

Полное обучение Android разработке с нуля до получения оффера. Делаем упор на практику и обратную связь

Onboarding в разработку - <span>Полное обучение Android разработке с нуля до получения оффера. Делаем упор на практику и обратную связь</span>
Узнать подробнее
Узнать подробнее
Обучающий Kotlin телеграм бот (с тестами)

Ваш основной инструмент для изучения основ языка. Бесплатные тесты и практика внутри.

Обучающий Kotlin телеграм бот (с тестами) - Ваш основной <span>инструмент для изучения основ языка.</span> Бесплатные тесты и практика внутри.
Узнать подробнее
Узнать подробнее
Бесплатные уроки по Android разработке

Самостоятельное обучение разработке Андроид приложений. Понятные видеоуроки с разжеванными примерами.

Бесплатные уроки  по Android разработке - Самостоятельное <span>обучение разработке Андроид приложений.</span> Понятные видеоуроки с разжеванными примерами.
Узнать подробнее
Узнать подробнее
Курс по UI/Unit тестированию

Для ручных тестировщиков, которые готовы осваивать автотесты с использованием актуального стека технологий. [в разработке]

Курс по UI/Unit тестированию - Для ручных тестировщиков, которые <span>готовы осваивать автотесты</span> с использованием актуального стека технологий. [в разработке]
Узнать подробнее
Узнать подробнее
Обучающий Android телеграм бот (с тестами)

Бесплатные теоретические тесты для самопроверки. А также информер на практических спринтах по Android.

Обучающий Android телеграм бот (с тестами) - Бесплатные <span>теоретические тесты для самопроверки.</span> А также информер на практических спринтах по Android.
Узнать подробнее
ИИ-ментор код-ревью и голосовые собесы
Открыть