Sobes.tech
Junior — Middle

Как да реализираме изпълнението на мрежови заявки, използвайки ViewModel в приложение?

sobes.tech AI

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