targetSdkVersion ≥ 26
, но пользователь может включить ограничения для всех приложений в настройках.Начиная с Android 8.0, Фоновые сервисы работают пока пользователь взаимодействует с приложением. Система убивает все фоновые сервисы через несколько минут после того, как пользователь покидает приложение.
Нельзя запустить фоновый сервис для приложения, с которым не взаимодействует пользователь.
Вместо фоновых сервисов рекомендуется использовать JobScheduler или видимые сервисы.
Как вы уже знаете из предыдущего поста, чтобы запустить видимый сервис, нужно сначала запустить фоновый сервис методом startService(), а потом вызвать метод startForeground() на этом сервисе. Но, начиная с Android 8.0, нельзя запустить фоновый сервис, если пользователь не взаимодействует с приложением. Поэтому в API level 26 был добавлен метод startForegroundService(), который делает то же, что и
startService()
, но обещает системе, что метод startForeground()
будет вызван сразу после старта сервиса. Если не вызывать startForeground()
, то система убьет сервис через несколько секунд. Документация.