Ревьюер требует обернуть suspend-вызов Retrofit в withContext(Dispatchers.IO)
interface ShopApi {
@GET("catalog")
suspend fun catalog(): List<ProductDto>
}
class CatalogViewModel(private val api: ShopApi) : ViewModel() {
fun load() = viewModelScope.launch {
_state.value = UiState.Content(api.catalog())
}
}
viewModelScope работает на Dispatchers.Main. Ревьюер пишет: «Сетевой вызов на главном потоке, будет NetworkOnMainThreadException». Прав ли он?
- Нет: suspend-метод Retrofit сам не блокирует Main
- Да: suspend-функции выполняются в вызывающем потоке
- Да: без IO запрос упадёт на Android 9+
- Нет: viewModelScope всегда работает на IO
