2016-05-14 184 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 –