[英]How to inject Repository in ordinary classes using hilt
我的资料库
class MyRepository @Inject constructor(
private val myDao: IMyDao
){
...
}
我的模块
@InstallIn(SingletonComponent::class)
@Module
class MyModule {
@Provides
fun provideMyRepository(MyDao: IMyDao): MyRepository{
return MyRepository(MyDao)
}
}
在工人中使用
class MyWorker(appContext: Context, workerParams: WorkerParameters) :
Worker(appContext, workerParams) {
private val myRepository: MyRepository =
EntryPointAccessors.fromApplication(appContext, MyRepository::class.java)
}
在应用程序 class 中启动 worker。
但出现错误: java.lang.ClassCastException: Cannot cast com.freedom.android.DaggerMyApplication_HiltComponents_SingletonC$SingletonCImpl to com.freedom.android.MyRepository
我看了相关的文档。但是我不想使用这个接口,我只想提供class。
请告诉我问题是什么。
在这种情况下,您需要使用 hilt worker
@HiltWorker class WokerName @AssistedInject constructor(
@Assisted appContext: Context,
@Assisted params: WorkerParameters,
myRepository: MyRepository): CoroutineWorker(appContext, params)
Go 通过下面的所有链接,您将获得所有 gradel 依赖项,如何使用它们等。
https://developer.android.com/training/dependency-injection/hilt-jetpack#kotlin https://developer.android.com/reference/androidx/hilt/work/HiltWorker 8810563352.888278828//6developer指南/背景/持久/配置/自定义配置https://developer.android.com/topic/libraries/app-startup
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.