Kotlin Koin注入WorkManager
我有一个基础工作经理Kotlin Koin注入WorkManager,kotlin,androidx,koin,Kotlin,Androidx,Koin,我有一个基础工作经理 class BackgroundSyncWorker ( appContext: Context, workerParams: WorkerParameters ): Worker(appContext, workerParams) { override fun doWork(): Result { return Result.success() } } 我想将我的存储库注入其中,以便在数据库中执行一些工作。我已经正确地设
class BackgroundSyncWorker (
appContext: Context,
workerParams: WorkerParameters
): Worker(appContext, workerParams) {
override fun doWork(): Result {
return Result.success()
}
}
我想将我的存储库注入其中,以便在数据库中执行一些工作。我已经正确地设置了Koin,但似乎找不到一种方法来将我的依赖注入到Worker中。我已经尝试继承KoinComponent并尝试使用它,但是
by inject()
不存在,但是有两个by inject
方法我找不到如何使用。似乎没有任何关于如何注入管理者的信息,尽管有一些关于使用dagger的信息。这确实有效,我只是使用了var
而不是val
class BackgroundSyncWorker (
appContext: Context,
workerParams: WorkerParameters
): Worker(appContext, workerParams), KoinComponent {
val dataSyncRepository : DataSyncRepositoryImpl by inject()
override fun doWork(): Result {
return Result.success()
}
}
我从您的代码中注意到以下几点: 这不起作用的第一个原因是,您需要从KoinComponent扩展/继承BackgroundSyncWork,从而使此BackgroundSyncWork koin知晓
class BackgroundSyncWorker (
appContext: Context,
workerParams: WorkerParameters
): Worker(appContext, workerParams), KoinComponent {
val database: Database by inject()
override fun doWork(): Result {
return Result.success()
}
}
第二:另外,请确保在koin模块中正确配置了数据库对象创建。它应该可以正常工作。是的,我在下面看到:),这是一个愚蠢的错误。谢谢你!未解析的引用。由于接收器类型不匹配,以下候选项均不适用:can y post主模块配置该模块与Koin的正常模块相同