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.