从 Workmanager 更新 UI

D-D*_*D-D 8 android android-jetpack android-workmanager

如何从 Android WorkManager 更新 UI。

Android Workmanager可以接收Boolean、Integer、Long、Float、Double、String

文档说:

public Data.Builder putAll (Map<String, Object> values)
Run Code Online (Sandbox Code Playgroud)

“将所有输入键值对放入生成器中。有效类型包括:Boolean、Integer、Long、Float、Double、String 以及每种类型的数组版本。无效类型会引发 IllegalArgumentException。”

  1. 如何传递更新 UI 的回调。
  2. 如何在不调用 DB 的情况下传递 POJO。

Result.SUCCESS 或 Result.FAILURE 不是解决方案,因为只有在工作完成时才会返回。

pfm*_*ggi 7

首先,WorkManager 是一个用于可延迟后台工作的 API。如果您希望应用程序在前台显示更新,则可能是错误的 API。WorkManager 文档涵盖了这一点

其次,androidx.work.Data 文档说明:

这是一个轻量级容器,不应被视为您的数据存储。因此,MAX_DATA_BYTES有效负载的序列化(字节数组)大小受到强制限制。IllegalStateExceptions如果您尝试序列化或反序列化超过此限制,此类将抛出异常。

由于 WorkManager 是 Android 架构组件的一部分,一个好的解决方案是使用 LiveData 在后台作业和(最终在前台)UI 之间传递状态更新。

这显示在WorkManager Codelab 中。

步骤 8. 标记并显示工作状态,涵盖了这一点。