【发布时间】:2021-07-12 10:51:48
【问题描述】:
首先,我创建了名为 UpdaterWorker 的工人类。 之后,我在我的应用程序类中覆盖了 getWorkManagerConfiguration。 我创建了一个 WorkerFactory 类。
这就是我必须做的,还是我错过了什么?
如何创建一次性请求?
当我尝试将 updater worker 注入主要活动时,我收到此错误:Dagger 不支持注入 @AssistedInject 类型,.workmanager.UpdaterWorker。你的意思是要注入它的辅助工厂类型吗?
**Updater worker**
@HiltWorker
class UpdaterWorker @AssistedInject constructor(
private val api: ReservationApi,
private val updaterUrl: String,
private val prefManager: PrefManager,
@Assisted private val context: Context,
@Assisted workerParams: WorkerParameters
) : Worker(context, workerParams) {
...
}
** Worker Factory**
class WorkerFactory @Inject constructor(
private val api: ReservationApi,
@param:Named("update_url") private val updaterUrl: String,
private val prefManager: PrefManager,
) : WorkerFactory() {
override fun createWorker(
appContext: Context,
workerClassName: String,
workerParameters: WorkerParameters
): ListenableWorker? {
return when (workerClassName) {
WorkerEnums.UpdaterWorker.name -> {
UpdaterWorker(api, updaterUrl, prefManager, appContext, workerParameters)
}
else ->
throw Resources.NotFoundException("Worker not found")
}
}
}
** My application class**
override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}
**Main Activity**
@Inject
lateinit var updaterWorker: UpdaterWorker
【问题讨论】:
-
你为什么要将你的工人注入任何其他类?您只需要他们创建一个 WorkRequest,仅此而已
标签: android kotlin dagger-hilt