Sobes.tech
Junior — Middle

Hogyan valósítható meg hálózati kérések végrehajtása ViewModel segítségével egy alkalmazásban?

sobes.tech MI

Válasz az MI-től

Az Android alkalmazásban hálózati kérések végrehajtásához általában az MVVM architektúrát és olyan könyvtárakat használnak, mint a Retrofit és a Coroutines.

Fő ötlet:

  • A ViewModel tartalmazza az adatok betöltésének logikáját és kezeli a UI állapotát.
  • A hálózati kéréseket aszinkron módon hajtják végre, hogy ne blokkolják a fő szálat.
  • A kérés eredményeit LiveData vagy StateFlow segítségével továbbítják a nézethez.

Példa Kotlin Coroutines és Retrofit használatával:

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) {
                // Hibakezelés
            }
        }
    }
}

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

Itt a viewModelScope automatikusan megszakítja a korutint a ViewModel megsemmisítésekor, így elkerülve a memória szivárgásokat. Ez a megközelítés világos felelősségmegosztást biztosít és megkönnyíti a tesztelést.