Sobes.tech
Back to questions
Junior — Middle
65

Каким образом реализовать выполнение сетевых запросов, используя ViewModel в приложении?

Companies where asked
Мой СкладМой Склад

Answer from AI

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, что предотвращает утечки памяти. Такой подход обеспечивает чистое разделение ответственности и удобство тестирования.