MyRepository
class MyRepository @Inject constructor(
private val myDao: IMyDao
){
...
}
MyModule
@InstallIn(SingletonComponent::class)
@Module
class MyModule {
@Provides
fun provideMyRepository(MyDao: IMyDao): MyRepository{
return MyRepository(MyDao)
}
}
在Worker 中使用
class MyWorker(appContext: Context, workerParams: WorkerParameters) :
Worker(appContext, workerParams) {
private val myRepository: MyRepository =
EntryPointAccessors.fromApplication(appContext, MyRepository::class.java)
}
在应用程序类中启动worker。
但出现错误:java.lang.ClassCastException: Cannot cast com.freedom.android.DaggerMyApplication_HiltComponents_SingletonC$SingletonCImpl to com.freedom.android.MyRepository
我阅读了相关文件。但我不想使用接口,我只想提供类。
请告诉我出了什么问题。
在这种情况下,您需要使用hilt-worker
@HiltWorker class WokerName @AssistedInject constructor(
@Assisted appContext: Context,
@Assisted params: WorkerParameters,
myRepository: MyRepository): CoroutineWorker(appContext, params)
通过下面的所有链接,你会得到所有的gradel依赖,如何使用它们等。
https://developer.android.com/training/dependency-injection/hilt-jetpack#kotlinhttps://developer.android.com/reference/androidx/hilt/work/HiltWorkerhttps://developer.android.com/guide/background/persistent/configuration/custom-configurationhttps://developer.android.com/topic/libraries/app-startup