2016-05-14 161 views
1

我用Android的電子郵件成功創建了用戶,沒有發現任何問題 但是我下載了標準的Java庫並試圖讓用戶沒有錯誤或反饋錯誤或成功回撥如何創建Firebase用戶帳戶

public static void main(String ...args){ 
    String url= "https://example.firebaseio.com/"; 
    Firebase fb = new Firebase(url); 
    fb.createUser("[email protected]", "123456", new Firebase.ResultHandler() { 
     @Override 
     public void onSuccess() { 
      System.out.println("success"); 
     } 
     @Override 
     public void onError(FirebaseError firebaseError) { 
      System.out.println("failed !"); 
     } 
    }); 
    System.out.println("Hello there"); 
} 
+1

主線程可能在回調返回之前退出。您可以檢查您的Firebase帳戶,看看用戶是否真的創建好了。 –

+0

Good catch @ cricket_007。有關詳細信息,請參閱http://stackoverflow.com/questions/37098006/firebase-with-java-non-android-retrive-information/37100794#37100794。 –

+0

@FrankvanPuffelen謝謝,我知道RxJava會做同樣的事情,但是API中有一個阻塞機制。不確定Firebase –

回答

0

如上述意見,問題是主線程退出之前ResultHnadler被調用,所以我用這種方式來防止主線程ResultHnadler之前終止固定的問題得到所謂 其是否有更好的辦法

不錯
public static void main(String ...args) { 
    final AtomicBoolean isCalled = new AtomicBoolean(false); 
    String FIREBASE = "https://example.firebaseio.com/"; 
    Firebase fb = new Firebase(FIREBASE); 
    fb.createUser("[email protected]", "1234321", new Firebase.ResultHandler() { 
     @Override 
     public void onSuccess() { 
      isCalled.set(true); 
      System.out.println("success"); 
     } 
     @Override 
     public void onError(FirebaseError firebaseError) { 

      isCalled.set(true); 
      System.out.println("fail"); 
     } 
    }); 
    while (!isCalled.get()){ 
    } 
} 
+0

相關:http://stackoverflow.com/a/37080175/2308683 –