我已经在 WorkManager 中加入了一个PeriodicWork,并希望每次完成时都获取它的 Worker 的输出数据,但以下代码似乎不起作用,因为 Log 消息没有出现在 Logcat 中:
WorkManager.getInstance(getApplicationContext())
.getWorkInfoByIdLiveData(MyWork.getId())
.observe(this, new Observer<WorkInfo>() {
@Override
public void onChanged(@Nullable WorkInfo workInfo) {
Log.d("DEBUG", "onChanged()");
}
});
this
与 lifeCycleOwner
相同吗?我已将 this
改为此位置,因为此处无法识别 lifeCycleOwner
。
更新:
我设法让观察者像这样工作:
WorkManager.getInstance(getApplicationContext())
.getWorkInfosByTagLiveData(MY_WORK_TAG).
observeForever(new Observer<List<WorkInfo>>() {
@Override
public void onChanged(@Nullable List<WorkInfo> workInfos) {
Log.d("DEBUG", "onChanged()");
if (workInfos != null && (!(workInfos.isEmpty()))) {
for (WorkInfo wI: workInfos) {
if (wI.getState() == WorkInfo.State.RUNNING) {
\\ handle workinfo here
}
}
}
}
});
最佳答案
is this the same as lifeCycleOwner ? I have put this instead because lifeCycleOwner is not recognized here.
this
表示您调用代码的类。实际上,当您调用 getWorkInfoByIdLiveData
时,它会返回 LiveData
这意味着它应该在 Android 组件
中监听,例如 Activity
, Fragment
...如果您的类没有实现 LifecycleOwner
,您可以使用 observeForever
而不是 observe
关于java - 观察 WorkManager Work 以获得完成的 Work 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62443913/