使用 Hilt 注入 WorkManager 但出现错误 "Dagger does not support providing @AssistedInject types."
Inject WorkManager with Hilt but getting error "Dagger does not support providing @AssistedInject types."
While injecting WorkManager using HILT, compiler throwing below error
"Dagger does not support providing @AssistedInject types"
已按照下面提到的所有步骤进行操作 link
https://developer.android.com/training/dependency-injection/hilt-jetpack
PFB 编码片段和 build.gradle HILT 和 Worker 的依赖项
WorkerClass
依赖关系
为了解决这个问题,已经看到并实施了各种 S.O。 post 但运气不好。
Whereas, if I didn't use both @HiltWorker and @AssistedInject and
removed other dependencies from object constructor code compiles and
run successfully but field injection for required dependencies won't
work.
因此不确定是它的库问题还是某些实现问题。
并提前感谢您的支持和回答!
编辑:
(添加 WorkerModule.kt 代码)
@Module
@InstallIn(SingletonComponent::class)
object WorkerModule {
@Singleton
@Provides
fun provideWorkerModule(context: Context,
workerParameters: WorkerParameters
// appNetworkService: AppNetworkService,
// appDatabaseService: AppDatabaseService
): PaymentTrackerWorker {
// return PaymentTrackerWorker(context, workerParameters,appNetworkService,appDatabaseService)
return PaymentTrackerWorker(context, workerParameters)
}
}
错误指出您正在尝试 @Provides
具有 @AssistedInject
构造函数的 class。这是有道理的:毕竟,在单例上下文中无法获得 WorkerParameters
的正确实例。
幸运的是,WorkerModule
也完全没有必要,因为 HiltWorkerFactory
已经知道如何创建任何 @HiltWorker
-注释的 class。只需删除模块,并按照教程确保 HiltWorkerFactory
安装在 WorkManager
.
While injecting WorkManager using HILT, compiler throwing below error
"Dagger does not support providing @AssistedInject types"
已按照下面提到的所有步骤进行操作 link
https://developer.android.com/training/dependency-injection/hilt-jetpack
PFB 编码片段和 build.gradle HILT 和 Worker 的依赖项
WorkerClass
依赖关系
为了解决这个问题,已经看到并实施了各种 S.O。 post 但运气不好。
Whereas, if I didn't use both @HiltWorker and @AssistedInject and removed other dependencies from object constructor code compiles and run successfully but field injection for required dependencies won't work.
因此不确定是它的库问题还是某些实现问题。
并提前感谢您的支持和回答!
编辑: (添加 WorkerModule.kt 代码)
@Module
@InstallIn(SingletonComponent::class)
object WorkerModule {
@Singleton
@Provides
fun provideWorkerModule(context: Context,
workerParameters: WorkerParameters
// appNetworkService: AppNetworkService,
// appDatabaseService: AppDatabaseService
): PaymentTrackerWorker {
// return PaymentTrackerWorker(context, workerParameters,appNetworkService,appDatabaseService)
return PaymentTrackerWorker(context, workerParameters)
}
}
错误指出您正在尝试 @Provides
具有 @AssistedInject
构造函数的 class。这是有道理的:毕竟,在单例上下文中无法获得 WorkerParameters
的正确实例。
幸运的是,WorkerModule
也完全没有必要,因为 HiltWorkerFactory
已经知道如何创建任何 @HiltWorker
-注释的 class。只需删除模块,并按照教程确保 HiltWorkerFactory
安装在 WorkManager
.