java - 观察 WorkManager Work 以获得完成的 Work 输出

标签 java android

我已经在 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()");
                }
            });

thislifeCycleOwner 相同吗?我已将 this 改为此位置,因为此处无法识别 lifeCycleOwner

基于thisthis .

更新:

我设法让观察者像这样工作:

        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/

相关文章:

android - TimeZone.getRawOffset() 似乎不适用于 Android 4.2

java - gson反序列化: Reference owner of nested object

Java自定义TreeModel : Using treeStructureChanged()

java - 如何将 byte[index] 转换为简单字符或其他更好的表示形式?

java - Java 程序中的下载有时会损坏

java - 如何连接到 java 中的 Binder C++ 服务?

android - 日期选择器的外观

android - AutoCompleteTextView 点击监听器无法正常工作

android - 一些应用程序如何能够在 android webview 中成功执行谷歌登录?

java - 从外部方法更改 void GUI 构造函数的 JLabel 值