Contenu du post
🤖Как правильно загружать данные для UI через ViewModel (RU,20м) Я видел разные вариации загрузки данных через ViewModel, чтобы они "быстрее показались на UI": запуск в init блоке ViewModel, запуск загрузки из LaunchedEffect из Composable или из Fragment коллбека. Я за самый правильный путь - использование холодных стримов данных, которые запустят в момент появление клиента для отображения данных из них. Все эти ранние прогревы экономят очень мало по сравнению с длинной запроса. Рекомендую почитать статью, где автор описал все лучшие практики по загрузке. class UserAccountDetailsViewModel( private val getUserDetailsUseCase: GetUserDetailsUseCase = GetUserDetailsUseCase.create(), ) : ViewModel() { val userDetails: Flow<ViewState> = flow { emit( getUserDetailsUseCase.execute() .fold( onSuccess = { ViewState(...) }, onFailure = { ViewState(...) } ) ) }.stateIn( viewModelScope, SharingStarted.WhileSubscribed(5_000), // Важно ViewState(isLoading = true, isError = false) ) } Что еще полезно в статье: 👉 Как suspend вызов превратить в Flow 👉 Как делать принудительное обновление 👉 Условная загрузка #android#архитектура