Вы можете использовать библиотеку Android-Job из Evernote
implementation 'com.evernote:android-job:1.2.6'
Утилита для Android для запуска заданий, отложенных в фоновом режиме.
В зависимости от версии Android используются JobScheduler, GcmNetworkManager или AlarmManager
Использование
Класс JobManager служит точкой входа.
Ваша работа должна продлить класс Работа .
Создайте JobRequest с соответствующим классом построителя и запланируйте этот запрос с помощью JobManager .
Прежде чем вы сможете использовать JobManager , вы должны инициализировать синглтон.
Вам нужно предоставить Context и добавить реализацию JobCreator после этого.
JobCreator отображает тег задания на определенный класс задания. Рекомендуется инициализировать JobManager в методе onCreate () вашего объекта Application, но есть альтернатива, если у вас нет доступа к классу Application.
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
JobManager.create(this).addJobCreator(new DemoJobCreator());
}
}
public class DemoJobCreator implements JobCreator {
@Override
@Nullable
public Job create(@NonNull String tag) {
switch (tag) {
case DemoSyncJob.TAG:
return new DemoSyncJob();
default:
return null;
}
}
}
После этого вы можете начать планирование заданий.
public class DemoSyncJob extends Job {
public static final String TAG = "job_demo_tag";
@Override
@NonNull
protected Result onRunJob(Params params) {
// run your job here
return Result.SUCCESS;
}
public static void scheduleJob() {
new JobRequest.Builder(DemoSyncJob.TAG)
.setExecutionWindow(30_000L, 40_000L)
.build()
.schedule();
}
}
Это расширенная версия Планировщика заданий по умолчанию в Android и обладающая большими возможностями, чем стандартная, имеющая множество ограничений и совместимость с предыдущими версиями.