Hilt Worker 未启动。当我只为 worker 构造函数使用默认参数时工作正常,当我添加第三个参数时它失败

Hilt Worker not getting initiated. Works fine when I use only default params for worker constructor, when I add third param it fails

似乎出于某种原因它没有使用我的自定义工作器,而是启动了默认工作器。以下是代码片段

@HiltWorker
class RequestsWorker @AssistedInject constructor(
@Assisted appContext: Context,
@Assisted workerParams: WorkerParameters,
var dbRepository: DBRepository) : Worker(appContext, workerParams) {
//doWorK...
}

Application.class

@HiltAndroidApp
class Application: Application(), Configuration.Provider {

@Inject
lateinit var workerFactory: HiltWorkerFactory

override fun onCreate() {
    super.onCreate()
}

override fun getWorkManagerConfiguration(): Configuration {
    return  Configuration.Builder()
        .setMinimumLoggingLevel(Log.DEBUG)
        .setWorkerFactory(workerFactory)
        .build()
}
}

从 fragment 启动 worker

private fun initWorker() {
    val request = OneTimeWorkRequestBuilder<RequestsWorker>().build()
    WorkManager.getInstance(applicationContext).enqueue(request)
}

我收到以下错误

 java.lang.NoSuchMethodException: com.sala.cbc.backgroundsync.RequestsWorker.<init> [class android.content.Context, class androidx.work.WorkerParameters]
    at java.lang.Class.getConstructor0(Class.java:2321)
    at java.lang.Class.getDeclaredConstructor(Class.java:2167)
    at androidx.work.WorkerFactory.createWorkerWithDefaultFallback(WorkerFactory.java:95)
    at androidx.work.impl.WorkerWrapper.runWorker(WorkerWrapper.java:244)
    at androidx.work.impl.WorkerWrapper.run(WorkerWrapper.java:136)
    at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
    at java.lang.Thread.run(Thread.java:764)

在清单中,我在应用程序标签中添加了以下内容

 <provider
        android:name="androidx.startup.InitializationProvider"
        android:authorities="${applicationId}.androidx-startup"
        tools:node="remove">
    </provider>

尝试更改 hilt-android-gradle-plugin 版本 项目级别 build.gradle 文件。

通过将版本从 2.37 升级到 2.38.1,它对我有用。

现在应该是这样的,

classpath "com.google.dagger:hilt-android-gradle-plugin:2.38.1"