Firebase与java(非Android)一起检索信息
我一直在尝试使用java代码(非安卓)获取firebase数据库的数据。我使用了和我在安卓应用程序中检索到的相同的方法。但它并没有得到数据
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.
}
});
# 1 楼答案
Firebase客户端在一个单独的线程中与服务器建立连接,并开始侦听那里的数据。当没有更多代码可执行时,程序的主线程将继续并退出,这通常发生在Firebase返回其第一个数据之前(可能需要几秒钟)
因此,您必须等待数据返回。对于测试程序,我通常在程序末尾插入一个简单的
Thread.sleep()
:但是在一个实际的程序中,你可能想找出一个更好的退出条件。例如,这里我们使用
CountDownLatch
使主代码等待操作完成:顺便说一下,不要在Android中使用这种方法,因为它会阻塞主/UI线程,使应用程序没有响应