How to properly use the new WorkManager
from Android Jetpack to schedule a one per day periodic work that should do some action on a daily basis and exactly one time?
The idea was to check if the work with a given tag already exists using WorkManager
and to start a new periodic work otherwise.
I've tried to do it using next approach:
public static final String CALL_INFO_WORKER = "Call worker";
...
WorkManager workManager = WorkManager.getInstance();
List<WorkStatus> value = workManager.getStatusesByTag(CALL_INFO_WORKER).getValue();
if (value == null) {
WorkRequest callDataRequest = new PeriodicWorkRequest.Builder(CallInfoWorker.class,
24, TimeUnit.HOURS, 3, TimeUnit.HOURS)
.addTag(CALL_INFO_WORKER)
.build();
workManager.enqueue(callDataRequest);
}
But the value
is always null, even if I put a breakpoint inside the Worker
's doWork()
method (so it is definitely in progress) and check the work status from another thread.
You can now use enqueueUniquePeriodicWork
method. It was added in 1.0.0-alpha03 release of the WorkManager.