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.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…