如何正确地使用Android Jetpack中的新WorkManager安排每天一次的定期工作,该工作每天应做一些 Action ,并且恰好一次?

这个想法是使用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);
}

但是,即使我在valueWorker方法中放入一个断点(因此它肯定正在进行中)并从另一个线程检查工作状态,doWork()始终为空。

最佳答案

您现在可以使用enqueueUniquePeriodicWork方法。它是在WorkManager的1.0.0-alpha03版本中添加的。

关于android - 使用WorkManager的定期日常工作请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50357066/

10-10 09:38