Назовите ограничения по фоновым сервисам в Android 8.0?
Для начала разберемся с разницей между foreground (не фоновое) и background (фоновое) приложениями. Приложение считается foreground если выполняется хотя бы один из этих пунктов:
- У приложения запущен foreground сервис
- У приложения видима какая-либо активити
- К приложению подключено другое foreground приложение (например к сервису или к провайдеру данного приложения)
Так вот, начиная с Android 8.0 система вводит ограничения на работу background сервисов background приложений (на foreground приложения эти ограничения никак не распространяются, такое приложения может создавать какие угодно сервисы в каком угодно количестве). Если приложение уходит в фон, то у него есть окно в несколько минут, в течении которых оно все еще может свободно использовать сервисы. Если по прошествии этого времени приложение не станет foreground, то система убьет все background сервисы данного приложения. Вместо сервисов рекомендуется использовать JobScheduler, который в большинстве случаев легко заменяет сервисы.
Также есть проблема с запуском foreground сервисов из background приложений. Так как сначала необходимо создать background сервис, а уже затем вывести его в foreground, то в Android 8.0 и выше система просто не даст запустить данный сервис. Для решения этой проблемы придумали метод startForegroundService(), который запускает сервис и дает ему 5 секунд на то, чтобы он был переведен в foreground. Если же этого не произойдет, то система убьет сервис
Как в продуктовой команде
AI Sprints — обучение профессиям с ИИ
Kanban-доска, код-ревью и Git Flow. Учитесь работать в процессах, которые используют в продакшене — задачи, как в Jira
- Kanban: доска задач как в Jira — привыкаете к инструментам с первого дня
- Процессы: код-ревью, Git workflow, спринты — как на реальной работе
- Треки: Android, Backend, QA — полный цикл разработки
AI Challenge — собери чат-бота за 5 дней
Бесплатный марафон по AI-инжинирингу. Cursor + OpenAI, 60 минут в день — без опыта в программировании. К пятнице у вас будет рабочий чат-бот с памятью в браузере.
- Практика с первого дня, без теории «в стол»
- Готовый проект в портфолио к концу недели
- Старт в любой день — учитесь в своём темпе