android - 如何将几个参数作为输入发送到 WorkManager?或者如何创建构造函数?或者如何将对象作为输入传递?
问题描述
我需要传递几个参数作为我的 WorkManager 的输入,但不知道如何。另外,我想通过存储库。
val data = workDataOf("cabinId" to task.cabinId)
val data2 = workDataOf("repository" to repository)
val uploadWorkRequest = OneTimeWorkRequestBuilder<WManager>()
.setInputData(data)
.setInputData(data2)
.build()
class WManager(appContext: Context, workerParams: WorkerParameters) : Worker(appContext, workerParams) {
override fun doWork(): Result {
val input = inputData.getInt("cabinId", 99)
val input2 = inputData("repository")
return Result.success(outputData)
}}
我试图为存储库实现接口可序列化,但它不起作用
解决方案
你在做正确的事。您可以将多个键值对传递给workDataOf
.
所以像:
val data = workDataOf("cabinId" to task.cabinId, "repository" to repository)
val request = OneTimeWorkRequestBuilder<WManager>()
.setInputData(data)
.build()
WorkManager.getContext(context).enqueue(request)
这是假设这repository
是一个可序列化的类型。如果没有,您将需要进行依赖注入。
推荐阅读
- c++ - 如何从另一个类访问表单组件
- c# - C# 为不同的属性名称重用逻辑
- esp32 - 在为异步 Web 服务器设置 esp32 时,void loop() 中可以有代码吗?
- node.js - 关于 Stripe connect express 的一些问题
- security - OTP Token 和 CSRF Token 的区别
- html - 为什么我的部分 CSS 代码在 Safari 中丢失但在 chrome 中没有?
- c++ - 如何找到多维数组的模式?
- sql - 查询以从具有互斥约束的单个字段返回两列
- flutter - 堆wrap_content里面的所有Widget?
- sql - Sitecore 9.3 安装错误 - 创建分片 - SqlShardingDeploymentTool.exe 返回非零退出代码