Firebase无法保存任何数据

时间:2014-10-28 01:08:32

标签: java firebase

我试图在firebase中进行一个简单的测试并保存包含字符串和布尔值的hashmap,但是我无法保存数据,它永远不会被推送。 http://hastebin.com/qucocuqexe.cs

1 个答案:

答案 0 :(得分:6)

Firebase将所有工作卸载到后台线程上。在JVM上运行时,事件将在单独的线程上触发,而不是在主线程上触发。在任何后台线程实际可以完成任何工作之前,您的简单测试应用程序可能正在完成。

您需要使用同步原语(例如信号量)来确保Firebase可以实际完成请求的操作。尝试等待setValue(...)完成以下内容:

public static Firebase ref = new Firebase("https://shs-newspaper.firebaseio.com//").child("news");

public static void main(String[] args) {
    final Semaphore semaphore = new Semaphore(0);
    Map<String, Boolean> test = new HashMap<String, Boolean>();
    test.put("Test", true);
    ref.setValue(test, new Firebase.CompletionListener() {
        @Override
        public void onComplete(FirebaseError error, Firebase ref) {
            semaphore.release();
        }
    });
    ref.setValue(test);
    semaphore.acquire();
}