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.