如何检查PeriodicWorkRequest是否入队?

时间:2018-08-21 07:36:39

标签: android android-workmanager

我通过以下方式排队定期任务:

PeriodicWorkRequest request = new PeriodicWorkRequest.Builder(UpdateWorker.class, 1, TimeUnit.DAYS)
            .addTag(WORK_TAG)
            .build();
    WorkManager.getInstance().enqueue(request);

如何检查此定期任务是否已排队? 我尝试过:

LiveData<List<WorkStatus>> statusesLiveData = WorkManager.getInstance().getStatusesByTag(WORK_TAG);

但是列表似乎一直都是空的。

3 个答案:

答案 0 :(得分:1)

您需要遵守string()才能获得该值。如果没有观察者,则不会发出任何值,这是LiveData的功能。

LiveData

答案 1 :(得分:0)

由于没有观察者,因此您没有观察LiveData,因此不会发出任何值,因此为null。如下更新代码:

WorkManager.getInstance().getStatusesByTag("[TAG_STRING]").observe(this, listOfWorkStatuses -> {

    WorkStatus workStatus = listOfWorkStatuses.get(0);
    boolean finished = workStatus.getState().isFinished();
    if (!finished) {
        // Work InProgress
    } else {
        // Work Finished
    }
});

答案 2 :(得分:0)

回答我自己的问题: 实际上有一种方法可以不观察(应该从后台线程调用):

List<WorkStatus> statusesLiveData = WorkManager.getInstance().synchronous()
                                      .getStatusesByTagSync(WORK_TAG);