Soma dados do firebase com eficiência

Eu tenho um aplicativo no qual tenho até alguns milhares de entradas em uma tabela do firebase. Agora, alguém está se conectando a esta tabela e preciso contar e resumir esses itens.

-itemlist
|
--1
  |-x:2
--2
  |-x:4

e assim por diante. Um usuário pode se conectar a qualquer momento (o que significa que ele nunca viu essa tabela antes) e outro usuário pode alterar algum valor a qualquer momento ou adicionar valores.

Agora, se eu tentar adicionar umValueEventListener para "itemlist", funciona se não houver novos dados, mas assim que eu me conectar a um novo banco de dados com 1000 entradas, o ouvinte chamará cada uma dessas 1000 entradas.

Eu tentei com onChildlistener, mas isso chama o ChildItem adicionado para cada item extra na primeira vez. Às vezes, isso leva mais de 2 minutos.

Existe uma maneira de obter o banco de dados inteiro uma vez, calculá-lo e depois ouvir apenas as alterações?

questionAnswers(1)

yourAnswerToTheQuestion