Проблема с параллелизмом 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»