Выполнение последовательности в коде с разработкой android studio - PullRequest
0 голосов
/ 08 апреля 2019

Я пытался реализовать последовательность выполнения в моем коде. Это функция регистрации пользователя в моем приложении, когда я вызываю функцию, вывод выглядит следующим образом (предположим, что учетная запись существует): test1 Аккаунт существует но мой ожидаемый результат таков: Аккаунт существует test1 Я не знаю, в чем проблема, может кто-нибудь помочь мне решить вопрос? заранее спасибо.

private boolean checkAccountExist(final String userID){
FirebaseDatabase.getInstance().getReference("userAccount").child(userID);
    cDB = FirebaseDatabase.getInstance().getReference("userAccount");
    cDB.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if(dataSnapshot.child(userID).exists()){
                System.out.println("Account Exist");
            }
            else{
                System.out.println("Account isn't exist");
            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {}
    });
    System.out.println("test1");
    return true;
}

мой ожидаемый результат таков: Аккаунт существует test1 но на самом деле вывод: test1 Аккаунт существует

1 Ответ

0 голосов
/ 08 апреля 2019

Все API Firebase являются асинхронными по очень веской причине. Вам нужно будет научиться выполнять асинхронное программирование, чтобы работать с ним. Там действительно нет простого пути.

Не следует пытаться превратить асинхронный API-интерфейс в синхронный, блокирующий API-интерфейс, поскольку при этом возникает риск сбоя приложения с помощью диалогового окна «Приложение не отвечает», если оно выполняется в основном потоке, а база данных занимает больше нескольких секунд. ответить (потому что соединение медленное или данных много). Тот факт, что API является асинхронным, защищает вас от этой катастрофы.

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