【发布时间】:2019-01-07 18:50:05
【问题描述】:
我如何检查WorkManager 是否已被安排。
这是我安排WorkManager的代码。
public static void scheduleWork() {
PeriodicWorkRequest.Builder photoCheckBuilder =
new PeriodicWorkRequest.Builder(WorkManagerService.class, TIME_INTERVAL_IN_SECONDS,
TimeUnit.SECONDS);
PeriodicWorkRequest photoCheckWork = photoCheckBuilder.build();
WorkManager instance = WorkManager.getInstance();
if (instance != null) {
instance.enqueueUniquePeriodicWork("TAG", ExistingPeriodicWorkPolicy.KEEP , photoCheckWork);
}
}
我在Application 班级的onCreate() 中致电scheduleWork()。
甚至我也可以通过 this method 检查我的服务是否正在运行。但如果 WorkManager 已经安排在预定时间消除不一致,我不想安排它。
喜欢
if(!workManagerIsScheduled())
{
scheduleWork();
}
有什么解决办法吗?
【问题讨论】:
-
您可以获取工作请求的状态...进行检查
-
你试过了吗?
-
查看答案@Man
-
没有必要检查 worker 是否已经在运行,因为您正在使用带有 'ExistingPeriodicWorkPolicy.KEEP' 的 instance.enqueueUniquePeriodicWork()。仅当没有标记为 uniqueWorkName 的待处理工作时,它才会运行新的 PeriodicWorkRequest。
-
'ExistingPeriodicWorkPolicy.KEEP' 用于特定任务,而不是用于工作。如果某个服务正在完成它的工作,那么这个标志会保持服务运行直到它完成它的工作。
标签: android android-workmanager