Execute task every second using Work Manager API

Its not working because, the minimum interval between two periodic work request is 15 min which is defined by MIN_PERIODIC_INTERVAL_MILLIS.

Based on the documentation:

Creates a PeriodicWorkRequest to run periodically once every interval period. The PeriodicWorkRequest is guaranteed to run exactly one time during this interval. The intervalMillis must be greater than or equal to PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS. It may run immediately, at the end of the period, or any time in between so long as the other conditions are satisfied at the time.

I would recommend you to avoid scheduling work so frequently. This will end up in consuming more resources and eventually impacting the battery life.


WorkManager is not designed to run tasks every second, as it has two options to build work request that is and

  • PeriodicWorkRequest - runs repeated task every 15 mins, even if we change the time interval to anyhwere < 15 mins it will by default run for 15 mins only.
  • OneTimeWorkRequest - runs once

WorkManager will enqueues the workrequests will call the respectively Worker classes to run the task where each workerclass overrides doWork() where the actual task is defined.

This method runs in background thread and runs for 10mins after which the worker stops.

Therefore if you want to schedule tasks running every second better the run foreground service or if your having running tasks in short duration.

If you want to run background tasks for longer periods, best practice is to avoid it.