我正在尝试使用 WorkManager 实例中存在的 getWorkInfoByLiveData 方法获取我的 WorkerInfo。
val workInfo = workManager.getWorkInfoByIdLiveData(uuid).value
WorkInfo 始终为空。另外,我正在从主线程调用此方法。
我如何检查此方法的场景。当用户发送网络请求时,我尝试将我的工作人员排队,如果没有连接互联网,我只需向 WorkManager 注册一个工作。一段时间后,如果我尝试使用UUID获取 WorkerInfo ,它总是会给我空值。
注意:调用getWorkInfoByLiveData时,此时不会执行 Worker。
难道我不希望 WorkManager 给我带有ENQUEUED状态的 WorkInfo。
编辑1: 所以,另一种情况是这样的,我正在使用的应用程序就像一个社交应用程序。现在注册第一个工作人员后,假设用户不想看到特定用户的帖子,所以我需要在这里注册我的第二个工作人员,因为此时用户互联网不可用。现在我需要做的是取消以前注册的工作人员,然后创建一个工作人员链,不显示用户的帖子到beginWith,然后获取所有帖子。现在为了取消工作人员,我检查之前的工作人员是否仍处于排队状态,然后取消它并创建一个新的链或工作人员。
这是代码。
fun Context.isWorkerRegistered(uuid: UUID?): Boolean {
val id = uuid ?: return false
val workerInfo = workManager.getWorkInfoByIdLiveData(id).value
return workerInfo?.state == WorkInfo.State.ENQUEUED
}
workInfo实例始终为空。