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.