Для OneTimeWorkRequest мы можем использовать WorkContinuation, чтобы гарантировать, что, если задание уже запланировано, мы можем СОХРАНИТЬ или ЗАМЕНИТЬ его.Для PeriodicWorkRequest такой опции нет, поэтому каждый раз, когда создается мое основное действие, создается новое задание, и через некоторое время я получаю это исключение.
java.lang.IllegalStateException: Apps may not schedule more than 100 distinct jobs
Поэтому я пытаюсь сделать следующее "уникальная пейодическая работа "
public void schedule(){
Constraints constraints = new Constraints.Builder().setRequiresBatteryNotLow(true).build();
OneTimeWorkRequest zombieSpawnWorker = new OneTimeWorkRequest.Builder(ZombieSpawnWorker
.class).setInitialDelay(15, TimeUnit.MINUTES).setConstraints(constraints).addTag(ZombieSpawnWorker.TAG).build();
this.setUuid(zombieSpawnWorker.getId());
WorkManager.getInstance().beginUniqueWork(TAG,
ExistingWorkPolicy.KEEP,
OneTimeWorkRequest.from(ZombieSpawnWorker.class));
}
и затем повторный вызов этого метода в конце работы
public WorkerResult doWork() {
try {
//work to be done
} catch (Exception e) {
Log.e(TAG,e.getLocalizedMessage());
return WorkerResult.FAILURE;
}
schedule();
return WorkerResult.SUCCESS;
}