Проблема с параллелизмом Firebase и JavaAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Проблема с параллелизмом Firebase и Java

Сообщение Anonymous »

Моя реализация отлично работает в iOS, используя Swift/Swiftui с помощью обработчиков завершения
Вот почему я разочарован Android, поскольку как Firebase, так и Android принадлежат Google!?
Вот проблема, последовательность чтений из Firebase 'un-ocomer nu-ocome wit hon-ocomer ye-ore-ocomer. Смешайте выбор от одного пользователя с другим для одного и до трех пользователей.

Код: Выделить всё

private interface AllUsersCount {
void onComplete(DataSnapshot dataSnapshot);
void onStart();
void onFailure();
}
< /code>
Тогда < /p>
private void readUserCountData(Query query, UsersActivity.AllUsersCount listener) {

listener.onStart();

query.addListenerForSingleValueEvent(new ValueEventListener() {

@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
listener.onComplete(dataSnapshot);
} else { // dataSnapshot doesn't exist
Log.e(TAG, "dataSnapshot doesn't exist!!!");
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage());
listener.onFailure();
}
});
}
< /code>
и, наконец, функция, которая все это инициирует: < /p>
private void getUserCount() {

ref = mFirebaseDatabase.getReference("USERS");
query = ref.orderByValue().equalTo(true);

// Completion Handler for Lookups
readUserCountData(query, new UsersActivity.AllUsersCount() {
@Override
public void onComplete(DataSnapshot dataSnapshot) {
int playerIndex = 0;

// Clear the List
userList.clear();

// Determine the number of users
numUsers = (int) dataSnapshot.getChildrenCount();

for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
String userId = snapshot.getKey();
setPlayerUsername(userId, playerIndex);
playerIndex = playerIndex + 1;
}
}

@Override
public void onStart() {
// When starting
Log.d("ONSTART", "Started");
}

@Override
public void onFailure() {
// If failed
Log.d("onFailure", "Failed");
}
});
}
Промойте и повторите с помощью функции setPlayerUsername (userId, playerIndex); , где ее передача информации, которая имеет свой собственный интерфейс и т. Д.
Все получено из Firebase, но, как я сказал, что некоторые из пользователей могут быть введены в состав! Решить это?

Подробнее здесь: https://stackoverflow.com/questions/797 ... oncurrency
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»