Por que nesse view model, diferentemente de quando inserimos um contato, não executamos a operação de consultar o contato dentro de uma Coroutine?
Por que nesse view model, diferentemente de quando inserimos um contato, não executamos a operação de consultar o contato dentro de uma Coroutine?
Oii Victor, tudo bem?
A questão de não utilizar uma coroutine para consultar o banco de dados pode estar relacionada ao comportamento esperado da operação de leitura em comparação com a operação de escrita.
Inserção de contato: Quando você insere um contato, essa operação é uma ação de escrita no banco de dados, que geralmente é mais custosa em termos de tempo e recursos. Por isso, é importante que essa operação seja executada em uma coroutine, para que não bloqueie a thread principal (UI thread) e mantenha a interface do usuário responsiva.
Consulta de contato: A leitura de dados do banco de dados é geralmente uma operação menos custosa e pode ser executada de forma síncrona sem causar grandes impactos na performance da aplicação. Só que isso pode variar dependendo da quantidade de dados e da complexidade da consulta.
Podemos imaginar que você tá desenvolvendo um aplicativo de contatos.
Quando a pessoa usuária clica em um contato pra ver os detalhes, você precisa buscar esse contato no banco de dados.
Se essa operação for rápida e não bloquear a UI, você pode optar por não usar uma coroutine. Mas se houver risco de a operação ser lenta (por exemplo, se o banco de dados for grande ou a consulta for complexa), é melhor usar uma coroutine.
Então, mesmo que a leitura seja rápida, é uma boa prática realizar operações de banco de dados em coroutines para garantir que a UI permaneça sempre responsiva, especialmente em casos onde o desempenho pode variar.
Espero ter ajudado.
Um abraço e bons estudos.
Obrigado pela resposta, Lorena! Isso faz sentido, já que no exemplo lidamos com armazenamento local. Se eu estivesse consultando uma API, mesmo em uma operação GET, por exemplo, poderia ser melhor usar uma co-routine para lidar com possível latência da requisição por HTTP?
Sim, exatamente! Ao lidar com operações de rede, como consultas a APIs, mesmo em operações GET que geralmente são consideradas rápidas, é uma prática recomendada usar coroutines. Isso ocorre porque a latência da rede pode variar e, em alguns casos, a resposta da requisição pode demorar mais do que o esperado, bloqueando a thread principal e tornando a interface do usuário não responsiva.
Então, ao usar coroutines para operações de rede, você garante que a execução da requisição seja feita de forma assíncrona, sem bloquear a thread principal. Isso permite que a interface do usuário permaneça responsiva, mesmo durante operações que possam demorar, como consultas de rede. Assim como nas operações de banco de dados, o uso de coroutines para operações de rede é uma prática recomendada para garantir uma melhor experiência do usuário em sua aplicação Android.
Abraços.