- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 WorkManager 实例中存在的 getWorkInfoByLiveData 方法获取我的 WorkerInfo。
val workInfo = workManager.getWorkInfoByIdLiveData(uuid).value
WorkInfo 始终为空。另外,我从主线程调用这个方法。
我如何检查此方法的场景。当用户发送网络请求时,我尝试将我的工作人员排队,如果互联网未连接,我只需向 WorkManager 注册工作即可。一段时间后,如果我尝试使用UUID获取WorkerInfo,它总是会给我空值。
注意:当调用getWorkInfoByLiveData时,Worker 不会在此时执行。
难道我不希望 WorkManager 给我状态为 ENQUEUED 的 WorkInfo 吗?
编辑 1:所以,另一种情况是这样的,我正在开发的应用程序就像一个社交应用程序。现在,在注册第一个工作人员后,假设用户不想看到特定用户的帖子,因此我需要注册第二个工作人员,因为此时用户互联网不可用。现在我需要做的是取消之前注册的工作人员,然后创建一个工作人员链,不显示用户的帖子 beginWith 和 then 获取所有帖子。现在,为了取消该工作人员,我检查前一个工作人员是否仍处于排队状态,然后取消它并创建一个新的链或工作人员。
这是代码。
fun Context.isWorkerRegistered(uuid: UUID?): Boolean {
val id = uuid ?: return false
val workerInfo = workManager.getWorkInfoByIdLiveData(id).value
return workerInfo?.state == WorkInfo.State.ENQUEUED
}
workInfo 实例始终为 null。
最佳答案
注意:在添加 Activity 观察者之前,Livedata 不会计算该值。
getWorkInfoByIdLiveData()
返回 LiveData<WorkInfo>
您需要观察才能获取 workInfo 值:
val status = workManager.getWorkInfoByIdLiveData(uuid)
.observe(this, Observer{ workInfo ->
if (workInfo!=null){
// ...
}
}
你可以看看WorkManager's codelab看看如何使用它。
关于android - EditWorkManager 方法 getWorkInfoByIdLiveData 未提供 WorkInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59956592/
我正在尝试使用 WorkManager 实例中存在的 getWorkInfoByLiveData 方法获取我的 WorkerInfo。 val workInfo = workManager.getWo
我当前的 Android 应用程序采用 archWorkerRuntimeVersion = '2.3.0-beta02' api "androidx.work:work-runtime:$archW
我是一名优秀的程序员,十分优秀!