Это зависит от того, сколько данных (продуктов) у вас под узлом sport_products
и какая пропускная способность у вас на устройстве, на котором вы их извлекаете.
Так что это будет медленнее, чем необходимо, так как вы извлекаете все реальные продукты, а не просто счетчик. Чтобы решить эту проблему, я рекомендую хранить отдельный счетчик для всех продуктов в базе данных, чтобы вы могли обновлять его каждый раз, когда пользователь добавляет или удаляет продукт. Хотя для отслеживания количества продуктов требуется больше кода, его чтение станет намного проще.
Предполагая, что у вас есть база данных, которая выглядит следующим образом:
Firebase-root
|
--- productCounter: 500
|
--- sport_products
|
--- productId
|
--- //Product details
Вы можете добавить счетчик прямо под корнем базы данных. Чтобы получить счетчик, просто присоедините слушатель к свойству productCounter
и получите значение из объекта DataSnapshot
. Поскольку вы можете использовать это приложение в многопользовательской среде, я рекомендую вам увеличить / уменьшить счетчик, используя Транзакция Firebase , как объяснено в моем ответе из этого поста .
Edit:
Методы, отличные от ChildEventListener
, будут запускаться на отдельных дочерних узлах и не несут знания о полном результате. Единственный способ получить счетчик продуктов вашего узла sport_products
- это сохранить свой собственный счетчик в коде, увеличить его в методе onChildAdded()
и уменьшить его в методе onChildRemoved()
. Это дает вам счетчик того, сколько детей ваш клиентский код уже обработал.