Dan*_*ims 5 kotlin koin androidx
我有一个基本的工作经理
class BackgroundSyncWorker (
appContext: Context,
workerParams: WorkerParameters
): Worker(appContext, workerParams) {
override fun doWork(): Result {
return Result.success()
}
}
Run Code Online (Sandbox Code Playgroud)
我想将我的存储库注入其中以在我的数据库中做一些工作。我已经正确设置了 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()
}
}
Run Code Online (Sandbox Code Playgroud)
我从你的代码中注意到了一些事情:
为什么这不起作用的第一个原因是因为您需要从 KoinComponent 扩展/继承 BackgroundSyncWork,因此使这个 BackgroundSyncWork koin-aware。
class BackgroundSyncWorker (
appContext: Context,
workerParams: WorkerParameters
): Worker(appContext, workerParams), KoinComponent {
val database: Database by inject()
override fun doWork(): Result {
return Result.success()
}
}
Run Code Online (Sandbox Code Playgroud)
第二:另外,请确保在 koin 模块中正确配置了数据库对象创建。它应该可以正常工作。
| 归档时间: |
|
| 查看次数: |
1680 次 |
| 最近记录: |