Any way to have initial delay for PeriodicWorkRequest Any way to have initial delay for PeriodicWorkRequest android android

Any way to have initial delay for PeriodicWorkRequest


Since the system runs your work you can't control the exact time it will run..

Your best option for creating a work execution delay is to use this PeriodicWorkRequest.Builder and supply a flexInterval as the 4th parameter:

PeriodicWorkRequest build = new PeriodicWorkRequest.Builder(     SyncJobWorker.class,      REPEAT_INTERVAL, // repeatInterval     TimeUnit.MILLISECONDS, // repeatIntervalTimeUnit     FLEX_INTERVAL, // flexInterval     TimeUnit.MILLISECONDS) // flexIntervalTimeUnit       .build();

Docs ref: https://developer.android.com/reference/androidx/work/PeriodicWorkRequest.Builder#periodicworkrequestbuilder_2

Creates a PeriodicWorkRequest to run periodically once within the flex period of every interval period. See diagram below. The flex period begins at intervalMillis - flexMillis to the end of the interval. intervalMillis must be greater than or equal to PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS and flexMillis must be greater than or equal to PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS.

enter image description here


Since androidx.work:work-*:2.1.0, PeriodicWorkRequests support initial delays. You can use the setInitialDelay method on PeriodicWorkRequest.Builder to set an initial delay.

See link for official documentation.