Sobes.tech
Junior — Middle

Jak zaimplementować wykonywanie zapytań sieciowych, korzystając z ViewModel w aplikacji?

sobes.tech AI

Odpowiedź od AI

Aby wykonać żądania sieciowe w aplikacji Android z użyciem ViewModel, zazwyczaj stosuje się architekturę MVVM oraz biblioteki takie jak Retrofit i Coroutines.

Główna idea:

  • ViewModel zawiera logikę ładowania danych i zarządza stanem UI.
  • Żądania sieciowe są wykonywane asynchronicznie, aby nie blokować głównego wątku.
  • Wyniki żądania są przekazywane do widoku za pomocą LiveData lub StateFlow.

Przykład z użyciem Kotlin Coroutines i 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) {
                // Obsługa błędów
            }
        }
    }
}

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

Tutaj viewModelScope automatycznie anuluje korutynę przy niszczeniu ViewModel, co zapobiega wyciekom pamięci. Podejście to zapewnia jasny podział odpowiedzialności i ułatwia testowanie.