我已经能够使用此处的指南成功上传和删除firebase存储库中的数据: https://www.firebase.com/docs/android/guide/saving-data.html
但是,如果我尝试使用Firebase指南检索数据: https://www.firebase.com/docs/android/guide/retrieving-data.html
app活动刚刚挂起 - 没有回复onDataChange或onCancel。我正在使用示例中的确切代码,直到指南中的这一点(在我的Activity onCreate()方法中):
Firebase ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts");
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
示例网址上有数据,因此应该可以使用。我在运行Android 4.0.3的手机上运行。
我做错了什么?
谢谢, RIZ
编辑:我试过运行Android 5.1.1的Samsung Note 4,Firebase运行正常。不适用于运行Android 4.0.3的华为。与Android版本有关吗?
编辑2:事实证明,下面的答案是正确的。我在我的一个帮助器类中发现了一些旧代码,它在等待某些东西时暂停了该线程。我重写它是真正的异步,它修复了问题。非常感谢 - 我接受了答案。
答案 0 :(得分:1)
从Firebase同步数据是一种异步操作。试图等待这些数据并不是一个好主意。
您的CallbackSignaler
阻止调用onDataChange()
。如果删除信号器,您将看到数据已加载,onDataChange()
被调用并记录该值。
请参阅我对此问题的回答:Setting Singleton property value in Firebase Listener