Как повторить работу каждые 5 секунд? А если все прошло успешно, то отмените его?
С приведенным ниже решением оно запускается каждые 10 секунд + Линейный рост времени.
// todo: schedule, and invoke worker every 5 seconds
// todo: if the work is done and there is no more work in queue - cancel worker.
fun scheduleBatchUpload(uniqueWorkName: String) {
val logBuilder = PeriodicWorkRequest.Builder(StreamLogWorker::class.java, 5, TimeUnit.SECONDS)
logBuilder.setBackoffCriteria(BackoffPolicy.LINEAR, 5000, TimeUnit.MILLISECONDS) // Custom retry not working
WorkManager.getInstance().enqueueUniquePeriodicWork(uniqueWorkName, ExistingPeriodicWorkPolicy.REPLACE, logBuilder.build())
}
class StreamLogWorker(context: Context, workerParams: WorkerParameters) : Worker(context, workerParams) {
override fun doWork(): Result {
Log.e("!!!!!!!!!!", "doWork")
return Result.retry()
}
}