2014-10-28 70 views

回答

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(); 
}