Firebase con java (no Android) recupera información

He intentado obtener mis datos para la base de datos de firebase usando código Java (no Android). Utilicé el mismo método que recuperé en la aplicación de Android. Pero no está obteniendo datos.

Firebase firebase = new Firebase("https://------.firebaseIO.com"); firebase.addValueEventListener(new ValueEventListener(){ @Override public void onDataChange(DataSnapshot ds) { long i = ds.child("Users").getChildrenCount(); userlist = new String[(int)i]; int j = 0; for( DataSnapshot each_ds : ds.getChildren() ){ userlist[j] = each_ds.child("username").getValue().toString(); System.out.println(userlist[j]); j++; } } @Override public void onCancelled(FirebaseError fe) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }); 

El cliente de Firebase establece su conexión con el servidor en un hilo separado y comienza a escuchar allí los datos. El hilo principal de tu progtwig continúa y sale cuando no hay más código para ejecutar, lo que suele ocurrir antes de que Firebase recupere sus primeros datos (lo que puede demorar unos segundos).

Así que tendrás que esperar a que vuelvan los datos. Para los progtwigs de prueba, generalmente hago esto insertando un Thread.sleep() simple al final de mi progtwig:

 Thread.sleep(20000); 

Pero en un progtwig real es probable que desee averiguar una mejor condición de salida. Por ejemplo, aquí usamos CountDownLatch para hacer que el código principal espere hasta que se complete la operación:

 final CountDownLatch sync = new CountDownLatch(1); ref.push().setValue("new value") .addOnCompleteListener(new OnCompleteListener() { public void onComplete(Task task) { sync.countDown(); } }); sync.await(); 

No use este enfoque en Android por cierto, ya que bloqueará el hilo principal / UI y dejará la aplicación sin responder.