# #java #android #firebase #firebase-realtime-database
Вопрос:
Я работал над приложением для чата, которое скоро опубликую в магазине Google Play. Так что моя проблема в том, что при извлечении друзей из базы данных firebase. Я ищу каждый идентификатор пользователя, используя свое приложение, а затем, если он совпадает с идентификатором моих друзей, я показываю идентификатор. Таким образом, если у меня 2000 пользователей, он проверит каждого пользователя, а затем покажет мне одного друга, который съест процессор, а также может занять годы, если у меня всего 30 друзей.
Код приведен ниже.
database.child(FirebaseAuth.getInstance().getUid()).child("friends")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
list.clear();
for (DataSnapshot dataSnapshot2 : snapshot.getChildren()) {
String friends = dataSnapshot2.getValue(String.class);
database.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot1) {
for (DataSnapshot dataSnapshot : snapshot1.getChildren()) {
if (dataSnapshot.getKey().equals(friends)) {
Users users = dataSnapshot.getValue(Users.class);
users.setUserId(dataSnapshot.getKey());
list.add(users);
}
}
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
}
});
Это небольшая часть выполнения всей работы, может кто-нибудь, пожалуйста, научить меня наиболее эффективному способу выполнения этой задачи.
Комментарии:
1. Что именно в этом коде работает не так, как вы ожидаете? Расскажите нам, что не так с общим кодом. Есть ли у вас какие-либо ошибки?
2. @AlexMamo нет, у меня нет ничего неправильного в коде, просто проблема в том, что я хочу более эффективный способ. Мой код проверяет каждого пользователя и отображает его в представлении корзины, если uid является одним из uid моего друга в моем списке друзей. Проблема в коде заключается в том, что если у меня 200 пользователей, использующих мое приложение, то оно проверит 200 пользователей, а затем отобразит моего друга. Как вы можете видеть, будет здорово подождать, пока он сделает такую операцию.
Ответ №1:
Если у вас есть список токенов, и у вас есть папка, в которой эти токены являются именами папок, в которых хранятся эти пользователи, зачем вы анализируете весь список в поисках соответствия, если вы можете просто получить доступ к папке по токену