Назовите ограничения по фоновым сервисам в Android 8.0?

Для начала разберемся с разницей между foreground (не фоновое) и background (фоновое) приложениями. Приложение считается foreground если выполняется хотя бы один из этих пунктов:

  1. У приложения запущен foreground сервис
  2. У приложения видима какая-либо активити
  3. К приложению подключено другое foreground приложение (например к сервису или к провайдеру данного приложения)

Так вот, начиная с Android 8.0 система вводит ограничения на работу background сервисов background приложений (на foreground приложения эти ограничения никак не распространяются, такое приложения может создавать какие угодно сервисы в каком угодно количестве). Если приложение уходит в фон, то у него есть окно в несколько минут, в течении которых оно все еще может свободно использовать сервисы. Если по прошествии этого времени приложение не станет foreground, то система убьет все background сервисы данного приложения. Вместо сервисов рекомендуется использовать JobScheduler, который в большинстве случаев легко заменяет сервисы.

Также есть проблема с запуском foreground сервисов из background приложений. Так как сначала необходимо создать background сервис, а уже затем вывести его в foreground, то в Android 8.0 и выше система просто не даст запустить данный сервис. Для решения этой проблемы придумали метод startForegroundService(), который запускает сервис и дает ему 5 секунд на то, чтобы он был переведен в foreground. Если же этого не произойдет, то система убьет сервис

Проверьте себя после изучения темы

Бесплатный бот с тестами и практическими заданиями по Kotlin.

  • 22 бесплатных урока
  • Тесты к каждому уроку (всего 220 вопросов)
  • Задачи в рамках практики KotlinSprint (120 задач) и курсовой проект «Телеграм бот для изучения иностранных слов»
Начать обучение

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

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

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

Узнать подробнее
Узнать подробнее
Практикум по Kotlin

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

Узнать подробнее
Узнать подробнее
Бесплатные уроки по Kotlin разработке

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

Узнать подробнее
Узнать подробнее
Onboarding в разработку

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

Узнать подробнее
Узнать подробнее
Обучающий Kotlin телеграм бот (с тестами)

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

Узнать подробнее
Узнать подробнее
Бесплатные уроки по Android разработке

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

Узнать подробнее
Узнать подробнее
Курс по UI/Unit тестированию

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

Узнать подробнее
Узнать подробнее
Обучающий Android телеграм бот (с тестами)

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

Узнать подробнее