Koin注入工人



我有一个基本的工作经理

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模块中正确配置数据库对象创建。它应该没有问题。

最新更新