Sobes.tech
Junior — Middle

Jak implementovat provádění síťových požadavků pomocí ViewModel v aplikaci?

sobes.tech AI

Odpověď od AI

Pro provádění síťových požadavků v Androidové aplikaci s použitím ViewModel se obvykle používá architektura MVVM a knihovny jako Retrofit a Coroutines.

Hlavní myšlenka:

  • ViewModel obsahuje logiku načítání dat a řídí stav UI.
  • Síťové požadavky jsou prováděny asynchronně, aby nezablokovaly hlavní vlákno.
  • Výsledky požadavku jsou předávány do View prostřednictvím LiveData nebo StateFlow.

Příklad s Kotlin Coroutines a 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) {
                // Zpracování chyb
            }
        }
    }
}

class MyRepository(private val apiService: ApiService) {
    suspend fun getDataFromNetwork(): ResultType {
        return apiService.fetchData()
    }
}

Zde viewModelScope automaticky zruší korutinu při zničení ViewModelu, což zabraňuje únikům paměti. Tento přístup zajišťuje jasné rozdělení odpovědností a usnadňuje testování.