Sobes.tech
Junior — Middle

Como implementar a execução de requisições de rede usando ViewModel numa aplicação?

sobes.tech IA

Resposta da IA

Para realizar pedidos de rede numa aplicação Android usando ViewModel, normalmente emprega-se a arquitetura MVVM e bibliotecas como Retrofit e Coroutines.

Ideia principal:

  • O ViewModel contém a lógica de carregamento de dados e gerencia o estado da interface de utilizador.
  • Os pedidos de rede são feitos de forma assíncrona para não bloquear o thread principal.
  • Os resultados do pedido são transmitidos para a vista através de LiveData ou StateFlow.

Exemplo usando Kotlin Coroutines e 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) {
                // Tratamento de erros
            }
        }
    }
}

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

Aqui, viewModelScope cancelará automaticamente a coroutine ao destruir o ViewModel, o que previne fugas de memória. Esta abordagem garante uma clara separação de responsabilidades e facilita os testes.