如何使用hilt在普通类中注入Repository



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

最新更新