Sobes.tech
Junior — Middle

Ako implementovať vykonávanie sieťových požiadaviek pomocou ViewModel v aplikácii?

sobes.tech AI

Odpoveď od AI

Za vykonávanie sieťových požiadaviek v Android aplikácii s použitím ViewModel sa zvyčajne používa architektúra MVVM a knižnice ako Retrofit a Coroutines.

Hlavná myšlienka:

  • ViewModel obsahuje logiku načítania dát a riadi stav UI.
  • Sieťové požiadavky sa vykonávajú asynchrónne, aby neblokovali hlavný vlákno.
  • Výsledky požiadavky sa prenášajú do View prostredníctvom LiveData alebo StateFlow.

Prí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) {
                // Spracovanie chýb
            }
        }
    }
}

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

Tu viewModelScope automaticky zruší korutinu pri zničení ViewModelu, čím sa zabraňuje únikom pamäti. Tento prístup zabezpečuje jasné rozdelenie zodpovedností a uľahčuje testovanie.