Коин: как внедрить sharedViewModel в WorkManager? - PullRequest
1 голос
/ 11 мая 2019

Я хочу добавить общий viewModel в WorkManager. Но

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 ]

1 голос
/ 15 мая 2019

Согласно стандарту KOIN, вы не можете поделиться ViewModel в другом контексте.

Если вы хотите поделиться ViewModel в WorkManage, в koin это невозможно.

SharedViewModel работает только в том же контексте, что и Activity, и его вложенные фрагменты.

Вы можете проверить, как работает функция sharedViewModel, здесь:

https://insert -koin.io / документы / 2,0 / документация / koin-андроид / index.html # _shared_viewmodel

0 голосов
/ 03 июля 2019

Как сказал @Pranay, он не предназначен для подобных случаев!

Поскольку WorkManager использует JobSchedulers и другие компоненты под капотом.А также, когда работа выполнена, нет никаких обещаний, что Коин будет инициализирован перед началом работы.

Кроме того, если вы хотите передать некоторые параметры своей работе, вам следует рассмотреть возможность передачи их в класс реализации Worker или сохранения их в SharedPreferences и доступа к ним при выполнении работы

...