Para ler informações do banco de dados Realtime Database do Firebase existem 3 métodos recomendados, e muitas vezes esses métodos acabam gerando dúvidas na sua implementação.
Essas dúvidas acontecem porque simplesmente as pessoas não buscam saber qual é a lógica desses 3 métodos, e já começam a trabalhar com os códigos. Pensando nisso neste post não vamos mexer com os códigos, mas sim entender de forma simplificada como eles funcionam.
E antes da leitura de um click e nos siga nas redes sociais
1 – addListenerForSingleValueListener()
Quando você utiliza esse método, quer dizer que você quer ler uma determinada informação do banco de dados e depois que essa leitura ocorrer esse método de forma automática será desativado.
Exemplo: Você quer fazer um login e consultar no banco se o nome do usuário existe. No seu dispositivo você vai inserir o nome do usuário e depois clicar em um botão para consultar o nome.
Ao clicar no botão, vai ser ativado o addListenerForSingleValueEvent e será feita apenas uma única consulta no seu banco para buscar o nome, quando terminar a consulta vai ser informado para você se foi possível encontrar no nome ou não e o addListenerForSingleValueEvent será finalizado.
Então caso o nome não exista, você ficara na mesma tela e poderá inserir novamente o nome de outro usuário, e pode fazer a consulta chamando novamente o addListenerForSingleValueEvent.
2 – addValueEventListener()
Quando você utiliza esse método, quer dizer que você quer ler uma determinada informação do banco de dados, mas depois que a leitura ocorrer esse método não será finalizado, então se ocorrer qualquer alteração naquela informação que você leu anteriormente, o seu aplicativo iria receber essa alteração de forma automática.
No exemplo anterior da consulta do nome do usuário no banco, esse método não seria recomendável utilizar, pois ele faria a consulta do nome do usuário e não seria finalizado, então caso não seja possível encontrar o nome desse usuário e você ficasse na mesma tela, para inserir o nome de outro usuário novamente, quando você clicasse no botão para fazer consulta e executar o addValueEventListener irá gerar erro (ou no caso iria duplicar a chamada), porque ele já está sendo executado.
Entenda que uma vez chamado esse método é você que tem que finalizar ele de forma manual, se não fizer isso, depois que você ler uma informação esse método vai ficar sempre atento para te informar se a informação que você leu anteriormente foi alterada ou removida.
Esse método não é recomendável para ler listas, pois se você ler com esse método uma lista de 1000 itens, usando um for, se qualquer um desses itens forem alterados ou se for inserido um novo item, esse método ira ler todos os 1000 itens novamente, desperdiçando o uso do banco. Lembrando que no modo gratuito você tem uma quantidade de MB que você poder ler do banco.
3 – addChildEventListener()
Podemos dizer que a lógica desse método é a mesma do addValueEventListener, a diferença está que ele é recomendável quando você quer ler no banco de dados uma lista de informação.
Então se você tiver uma lista de 1000 itens e utilizar esse método qualquer alteração que ocorrer ou se algum item for inserido, ele não irá ler os 1000 itens novamente, como no método addValueEventListener. O método addChildEventListener irá ler somente o item que foi inserido ou que foi alterado, economizando muito o uso do seu banco de dados.
Para mais informações acesse o link abaixo, que é do próprio site do Firebase:
https://firebase.google.com/docs/database/android/lists-of-data?hl=pt-br
https://firebase.google.com/docs/database/?hl=pt-br
https://firebase.google.com/docs/database/android/read-and-write?hl=pt-br
Conclusão
Neste post aprendemos a lógica para poder implementar esses métodos, esse entendimento pode parecer simples mas é essencial. Então resumindo se queremos ler apenas uma unica vez alguma informação no Banco de Dados utilizamos addListenerForSingleValueListener, se queremos ler informações e permanecer uma conexão com essa informação do banco para saber quando ela for alterada usamos o addValueEventListener e quando queremos ler uma lista de informações usamos o addChildEventListener.
Caso queira se aprofundar no Firebase não esqueça de conferir nossos cursos clicando aqui
Artigos Relacionados
Sobre o Autor
0 Comentários