Android上的Firebase没有检索数据

时间:2016-03-24 16:04:17

标签: android firebase firebase-realtime-database

我已经能够使用此处的指南成功上传和删除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:事实证明,下面的答案是正确的。我在我的一个帮助器类中发现了一些旧代码,它在等待某些东西时暂停了该线程。我重写它是真正的异步,它修复了问题。非常感谢 - 我接受了答案。

1 个答案:

答案 0 :(得分:1)

从Firebase同步数据是一种异步操作。试图等待这些数据并不是一个好主意。

您的CallbackSignaler阻止调用onDataChange()。如果删除信号器,您将看到数据已加载,onDataChange()被调用并记录该值。

请参阅我对此问题的回答:Setting Singleton property value in Firebase Listener