Назад к вопросам
Мой Склад
Junior — Middle
64
Каким образом реализовать выполнение сетевых запросов, используя ViewModel в приложении?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Для выполнения сетевых запросов в Android-приложении с использованием ViewModel обычно применяют архитектуру MVVM и библиотеки, такие как Retrofit и Coroutines.
Основная идея:
- ViewModel содержит логику загрузки данных и управляет состоянием UI.
- Сетевые запросы выполняются асинхронно, чтобы не блокировать главный поток.
- Результаты запроса передаются во View через LiveData или StateFlow.
Пример с использованием Kotlin Coroutines и Retrofit:
class MyViewModel(private val repository: MyRepository) : ViewModel() {
private val _data = MutableLiveData<ResultType>()
val data: LiveData<ResultType> = _data
fun fetchData() {
viewModelScope.launch {
try {
val response = repository.getDataFromNetwork()
_data.value = response
} catch (e: Exception) {
// Обработка ошибок
}
}
}
}
class MyRepository(private val apiService: ApiService) {
suspend fun getDataFromNetwork(): ResultType {
return apiService.fetchData()
}
}
Здесь viewModelScope автоматически отменит корутину при уничтожении ViewModel, что предотвращает утечки памяти. Такой подход обеспечивает чистое разделение ответственности и удобство тестирования.