【发布时间】:2018-10-25 16:37:24
【问题描述】:
如何正确使用来自 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);
}
但是value 始终为空,即使我在Worker 的doWork() 方法中放置了一个断点(所以它肯定是在进行中)并从另一个线程检查工作状态。
【问题讨论】:
标签: android android-architecture-components android-jetpack android-workmanager