Пожарная служба Один раз извлекает против слушателя в реальном времени в Recyclerview с фильтром - PullRequest
1 голос
/ 15 февраля 2020

У меня есть канал, как изображение в моем приложении. Я получаю список некоторых документов из коллекции Firetsore, и я заполняю их в списке, а затем использую его в представлении переработчика, чтобы показать детали пользователя.

Когда нажата лента, я хочу показать данные ditrict3 и district4. Как показано ниже:

 collectionRef = FirebaseFirestore.getInstance().collection("male");
 collectionRef.whereIn("district", Arrays.asList("district3", "district4"))
              .get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override
                            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                                if (task.isSuccessful()) {
                                    List<FilterDetails> filterDetailsList = new ArrayList<>();
                                    for (DocumentSnapshot document : task.getResult()) {
                                        FilterDetails filterDetails = document.toObject(FilterDetails.class);
                                        filterDetailsList.add(filterDetails);
                                        getParentActivity().hideLoading();
                                    }
                                    feedItemAdapter.updateData(filterDetailsList);
                                }
                            }
                        });

Когда будет щелкнуть округ 1, я поменяю гдеEqualTo ("район", "район1") и для другого выбора я изменю.

Пользователь может изменять это чаще и если я сделаю один раз, то это будет стоить мне очень дорого. Но если я буду использовать снимок в реальном времени, данные будут считываться снова и снова, если другие пользователи изменят свою информацию. Решения, которые я подумал: 1) Чтобы получить все данные, прежде чем пункт, где и сделать районную фильтрацию на стороне клиента (приложение). Но в этом, если в каждом штате 2000 пользователей. Я должен был бы загрузить столько данных. 2) Сделать одноразовую выборку для любых пользовательских кликов, а затем показать им тот же список. Я сделаю отдельный список для всех выборок.

Я действительно смущен этим. Любое понимание будет полезно. enter image description here

1 Ответ

0 голосов
/ 15 февраля 2020

Имейте в виду, что он кэширует недавно прочитанные документы локально и не будет взимать плату снова, если будущие запросы будут считываться из этого кэша. Я бы порекомендовал запустить некоторые тесты с addSnapshotListener и , отслеживая использование , которое он генерирует. Это может быть намного меньше загар, как вы себе представляете, и, по крайней мере, у вас будет больше конкретных данных, чтобы подтвердить / рассеять ваши опасения.

Если вы все еще беспокоитесь о ценах Cloud Firestore, я рекомендую выполняя некоторые подсчёты реалистичности c сценария ios. В этом случае я настоятельно рекомендую сравнить Cloud Firestore с альтернативой, такой как База данных в реальном времени. Большинство облачных баз данных имеют довольно уникальную модель ценообразования, и только вы можете решить, какое сочетание функций и цены будет работать для вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...