2

我想在 WorkManager 中注入共享 viewModel。但

by sharedViewModel<MyModel>()

没有解决。

class MyCoroutineWorker(context: Context, params: WorkerParameters):CoroutineWorker(context, params)
   , KoinComponent {
override val coroutineContext = Dispatchers.IO
val gameListModel by sharedViewModel<MyModel>()

override suspend fun doWork(): Result = coroutineScope {
    Result.success()
}
}

任何建议表示赞赏。

4

2 回答 2

2

根据 KOIN 标准,您不能ViewModel在不同的上下文中共享。

如果你想分享ViewModelWorkManage这是不可能的。

SharedViewModel只能在相同的上下文中工作,就像Activity它是嵌套的片段。

您可以在此处查看 sharedViewModel 功能的工作原理:

https://insert-koin.io/docs/2.0/documentation/koin-android/index.html#_shared_viewmodel

于 2019-05-15T11:36:54.477 回答
2

正如@Pranay 所说,它不是为这样的用例而设计的!

因为引擎盖下的WorkManager用途和其他组件。JobSchedulers而且当工作执行时,也不能保证 Koin 会在开始工作之前被初始化。

另外,如果您想将一些参数传递给您的工作,您应该考虑将它们传递给Worker实现类或将它们存储到SharedPreferences并在工作执行时访问它们

于 2019-07-03T16:49:18.467 回答