Я пытаюсь установить базовое соединение с firebase и получить некоторые данные из базы данных firebase, но перед запуском обратного вызова мой основной поток выходит из контекста, и я не получил никаких данных взамен. Ниже мой код:
public class UserStore {
private Firebase rootRef_;
private UserDetails userDetails;
public UserStore() {
rootRef_ = new Firebase("https://<FIREBASE-APP>.firebaseio.com/");
}
public UserDetails getUserDetails(String mailId) {
mailId = mailId.toLowerCase().replace(".", ",");
rootRef_.child("users/" + mailId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot != null) {
System.out.println("user data snapshot: " + dataSnapshot.toString());
UserStore.this.userDetails = dataSnapshot.getValue(UserDetails.class);
} else {
System.out.println("data snapshot is null!!");
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
return userDetails;
}
}
Я получаю правильный ответ на запрос, но это требует времени. Я попытался использовать сон в этом методе. Это работало нормально, но тогда это не будет в реальном времени.
В любом случае, в котором я могу получить ответ в реальном времени?