我想在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()
}
}
任何建议都值得赞赏。
答案 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
并在工作执行时对其进行访问