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í.