如何正确使用
Android Jetpack中的新WorkManager来安排每天一次的定期工作,这应该每天做一次并且只做一次?
我们的想法是使用WorkManager检查是否已存在具有给定标记的工作,否则开始新的定期工作.
我尝试使用下一种方法来做到这一点:
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); }
但是值总是为null,即使我在Worker的doWork()方法中放置一个断点(因此它肯定正在进行中)并从另一个线程检查工作状态.