В целом норм, но по конвенции корутин саспенд функция сама должна заботиться о том чтобы быть не блокирующей. То есть по хорошему тут не нужны диспетчеры во вьюмодели и в репе. По такой логике например работает саспенд в ретрофите и руме
Извини повторюсь, может ты не видел но ... то есть в вм делаем вот так lifecycleScope.launch { //call suspend func } а там под капотом самое все сработает?
@muroming имел ввиду, что во ViewModel методе нужно просто написать fun viewModelFunction() { viewModelScope.launch { getListUseCase.getSomrething() } } а в методе GetListUseCase класса fun getSomrething() = withContext(Dispatcher.IO) { // your code }
Ну скорее даже не в юзкейсе, а непосредственно в моменте где вам уже нужно будет переключение потока, это сторадж в примере выше
Понял, спасибо больше х)
а можно мне ссылку на этот момент в доке?
Прямо сейчас думаю вряд ли вспомню, но емнип Роман Елизаров что-то про это говорил. Завтра может постараюсь найти)
Обсуждают сегодня