Koin:如何在WorkManager中注入sharedViewModel?

时间:2019-05-11 04:01:44

标签: android-viewmodel koin

我想在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()
}
}

任何建议都值得赞赏。

2 个答案:

答案 0 :(得分:1)

根据KOIN标准,您无法在不同的上下文中共享View模型。

由于要在WorkManage中共享视图模型,因此无法使用。

SharedViewModel仅在与Activity等相同的上下文中使用,并且是嵌套的片段。

您可以检查sharedViewModel功能如何工作:

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

答案 1 :(得分:0)

正如@Pranay所说的,它不是用于这样的用例的!

因为WorkManager使用JobSchedulers和其他组件。而且,在执行工作时,也不保证在开始工作之前会初始化Koin。

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