我有一个基本的工作经理
class BackgroundSyncWorker (
appContext: Context,
workerParams: WorkerParameters
): Worker(appContext, workerParams) {
override fun doWork(): Result {
return Result.success()
}
}
,我想将我的存储库注入其中,以在我的数据库中进行一些工作。我已经正确设置了Koin,但似乎找不到如何将我的依赖性注入工人的方法。我尝试使用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扩展/继承背景SYNCWORK,所以这是不起作用的第一个原因
class BackgroundSyncWorker (
appContext: Context,
workerParams: WorkerParameters
): Worker(appContext, workerParams), KoinComponent {
val database: Database by inject()
override fun doWork(): Result {
return Result.success()
}
}
第二:另外,请确保在Koin模块中正确配置数据库对象创建。它应该没有问题。