Junior — Middle
Как да реализираме изпълнението на мрежови заявки, използвайки ViewModel в приложение?
sobes.tech AI
Отговор от AI
За изпълнение на мрежови заявки в Android приложение с използване на ViewModel обикновено се прилага архитектурата MVVM и библиотеки като Retrofit и Coroutines.
Основна идея:
- ViewModel съдържа логиката за зареждане на данни и управлява състоянието на UI.
- Мрежовите заявки се изпълняват асинхронно, за да не блокират главния поток.
- Резултатите от заявката се предават към View чрез LiveData или StateFlow.
Пример с Kotlin Coroutines и 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) {
// Обработка на грешки
}
}
}
}
class MyRepository(private val apiService: ApiService) {
suspend fun getDataFromNetwork(): ResultType {
return apiService.fetchData()
}
}
Тук viewModelScope автоматично отменя корутината при унищожаване на ViewModel, което предотвратява течове на памет. Този подход осигурява ясно разделение на отговорностите и улеснява тестването.