Fala pessoal, reparei um comportamento estranho ao utilizar o aplicativo onde por hora não era carregado a lista de contatos, analisei o banco de dados e vi que as informações estavam sendo inseridas corretamente.
Analisando o metodo buscaContatos() eu reparei que o bloco de codigo abaixo por hora não trazia os contatosBuscados
viewModelScope.launch {
val contatos = contatoDao.buscaTodosPorUsuario(_uiState.value.usuarioAtual)
contatos.collect { contatosBuscados ->
_uiState.value = _uiState.value.copy(
contatos = contatosBuscados
)
}
}
Debugando o codigo eu identifiquei uma grande lentidão para carga dos dados, e olhando a documentação do uso de Coroutines dentro do escopo de Launch se não explicitarmos o Dispatcher ele executa por default no Dispatcher.default:
https://developer.android.com/kotlin/coroutines/coroutines-adv?hl=pt-br
https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/launch.html
Logo pode ocasionar algum problema com relação ao uso das threads, então para solucionar é bem simples, basta utilizar explicitamente o Dispatcher.IO que você terá 100% de sucesso.
viewModelScope.launch(Dispatchers.IO) {
val contatos = contatoDao.buscaTodosPorUsuario(_uiState.value.usuarioAtual)
contatos.collect { contatosBuscados ->
_uiState.value = _uiState.value.copy(
contatos = contatosBuscados
)
}
}
Abraço galera!
Imagem com os dados não carregados:
Contatos inseridos: