Лучше всего использовать новую библиотеку WorkManager .Он охватывает все возможные сценарии уровня API:
- Использует JobScheduler для API 23+
- Для API 14-22 При использовании Firebase JobDispatcher в приложении и необязательной зависимости Firebase, использует Firebase JobDispatcher
- В противном случае использует пользовательскую реализацию AlarmManager + BroadcastReceiver
Кроме того, здесь некоторые литературные источники и примеры использования для него.
Вариант использования WorkManager предназначен только для фоновых заданий, требующих гарантированного выполнения, даже после того, как приложение будет убито.
Если вместо этого вам нужен сервис Foreground, то просто создать его самостоятельно, расширив класс Service .Для Oreo вам нужно будет показать уведомление пользователя.Затем служба может быть запущена в качестве переднего плана с помощью следующего вызова:
ContextCompat.startForegroundService(context, yourService);
Хотя, если служба работает только при активном приложении и останавливается вручную через приложение или всякий раз, когда приложение существует, вместо этого вам следуетрассмотрите возможность использования потока, а не службы.
Цитата из документации Android:
Если вам нужно выполнить работу вне основного потока, но только в то время, покапользователь взаимодействует с вашим приложением, тогда вам, вероятно, следует вместо этого создать новый поток, а не службу.Например, если вы хотите воспроизвести какую-то музыку, но только во время работы, вы можете создать поток в onCreate (), запустить его в onStart (), а затем остановить в onStop ().Также рассмотрите возможность использования AsyncTask или HandlerThread вместо традиционного класса Thread.Посмотрите документ Процессы и Потоки для получения дополнительной информации о потоках.
Помните, что если вы используете службу, она по-прежнему запускается в основном потоке вашего приложения по умолчанию, поэтому вам все равно следует создать новый поток в службе, если она выполняет интенсивные или блокирующие операции.