首页 > 解决方案 > 如何将几个参数作为输入发送到 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)
}}

我试图为存储库实现接口可序列化,但它不起作用

标签: androidandroid-workmanager

解决方案


你在做正确的事。您可以将多个键值对传递给workDataOf.

所以像:

val data = workDataOf("cabinId" to task.cabinId, "repository" to repository)
val request = OneTimeWorkRequestBuilder<WManager>()
    .setInputData(data)
    .build()

WorkManager.getContext(context).enqueue(request)

这是假设这repository是一个可序列化的类型。如果没有,您将需要进行依赖注入。


推荐阅读