如何检查 PeriodicWorkRequest 是否入队?
How to check if PeriodicWorkRequest was enqueued?
我按以下方式对周期性任务进行排队:
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);
但列表似乎一直为空。
您需要观察 LiveData
以获取值。如果没有观察者,则不会发出任何值,这是 LiveData
.
的特性
LiveData<List<WorkStatus>> statusesLiveData = WorkManager.getInstance().getStatusesByTag(WORK_TAG);
statusesLiveData.observe(...)
您没有观察 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
}
});
回答我自己的问题:
实际上有一种方法可以在不观察的情况下执行此操作(它应该从后台线程调用):
List<WorkStatus> statusesLiveData = WorkManager.getInstance().synchronous()
.getStatusesByTagSync(WORK_TAG);
我按以下方式对周期性任务进行排队:
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);
但列表似乎一直为空。
您需要观察 LiveData
以获取值。如果没有观察者,则不会发出任何值,这是 LiveData
.
LiveData<List<WorkStatus>> statusesLiveData = WorkManager.getInstance().getStatusesByTag(WORK_TAG);
statusesLiveData.observe(...)
您没有观察 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
}
});
回答我自己的问题: 实际上有一种方法可以在不观察的情况下执行此操作(它应该从后台线程调用):
List<WorkStatus> statusesLiveData = WorkManager.getInstance().synchronous()
.getStatusesByTagSync(WORK_TAG);