Sobes.tech
Junior — Middle

Cum se implementează realizarea cererilor de rețea folosind ViewModel într-o aplicație?

sobes.tech AI

Răspuns de la AI

Pentru a realiza solicitări de rețea într-o aplicație Android folosind ViewModel, se utilizează de obicei arhitectura MVVM și biblioteci precum Retrofit și Coroutines.

Ideea principală:

  • ViewModel conține logica de încărcare a datelor și gestionează starea UI.
  • Solicitările de rețea sunt efectuate asincron pentru a nu bloca firul principal.
  • Rezultatele solicitării sunt transmise către View prin LiveData sau StateFlow.

Exemplu cu 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) {
                // Tratarea erorilor
            }
        }
    }
}

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

Aici, viewModelScope va anula automat corutina la distrugerea ViewModel-ului, prevenind scurgerile de memorie. Această abordare asigură o separare clară a responsabilităților și facilitează testarea.