Начиная с Android Oreo, мы больше не можем поддерживать нормальные службы в фоновом режиме, потому что система:
1 убьет службу примерно через одну минуту, если само приложение переходит в фоновый режим после запуска service
2-исключить, если служба была запущена, когда само приложение находится в фоновом режиме
IntentService - это просто подкласс нормальной службы, которая выполняет всю свою работу последовательно в фоновом режиме поток и останавливает себя, когда он заканчивает выполнение всей своей работы. Но как услуга, на нее также влияют указанные выше ограничения.
Теперь для JobIntentService:
Будет действовать как обычный IntentService на устройствах до Oreo (потому что мы не не имеет никаких ограничений) и на Oreo + вместо этого будет использовать jobScheduler для достижения поведения, аналогичного IntentService. Он просто начинает работу как можно скорее , планирует свою работу через JobScheduler, и JobScheduler может выбрать отложить , которые работают немного, но его работа, скорее всего, будет отличаться или прерывается в ситуациях с нехваткой памяти, в режиме ожидания или когда они достигают ограничения по времени (~ 10 минут)
С JobIntentService выполнение некоторых конфигураций невозможно , как, например, определение конкретно, при каких обстоятельствах мы хотим, чтобы наши задания запускались (например, когда устройство заряжается или если у нас есть соединение WIFI), однако с помощью workmanager мы можем установить эти ограничения.
Использовать WorkManager для заданий, которые имеют некоторые Ограничения , или для заданий / работ, которые являются транзакционными , не выполняются , или для заданий, которые могут произойти в будущем , и используйте JobIntentService, когда вы хотите скопировать поведение обычного IntentService на Android Oreo + и для заданий, которые могут быть слегка задержаны и могут занять более 1 минута, но меньше 10 минут.
Надеюсь, я ответил на ваш вопрос.
С уважением