2013-05-20 1 views
0

새로운 Facebook SDK 3.0.1을 구현 중이며 Session과 관련하여 몇 가지 의문점이 있습니다.안드로이드 및 페이스 북 SDK 3.0.1 기능 getUserID

String userID; 
    public String getUserID(){ 
     final Session session = Session.getActiveSession(); 
     if (session != null && session.isOpened()) { 
      Request request = Request.newMeRequest(session, new Request.GraphUserCallback() { 
       @Override 
       public void onCompleted(GraphUser user, Response response) { 
        if (session == Session.getActiveSession()) { 
         if (user != null) { 
          userID = user.getId(); 
          System.out.println("User ID " + userID); //OK 
         } 
        } 
       } 
      }); 
      Request.executeBatchAsync(request); 
      return userID; 
     }else{ 
      return null; 
     } 

    } 

만이 보여주기 때문에 내가 System.out.println("ID is... "+FB.getUserID());을 할 때 문제는 다음과 같습니다 : "ID가 ..."

난 그냥 사용자 ID를 조회하는 함수를 만들었습니다.

내부 println은 ID (사용자 ID XXXXXXXXX)를 완벽하게 표시합니다. 문제는 정보를받는 시간입니다. 어떻게 제어 할 수 있습니까?

답변

0

나는 그것을 제어 할 수 없다고 생각합니다. "전송이 완료되기 전에 다른 처리를 계속할 수 있도록 허용하는 요청 인 비동기 요청을 실행 중입니다." (Wikipedia page 참조).
요청 개체가 onCompleted 메서드를 호출 할 때까지 기다려야합니다.

0

실제로이 문제를 해결하는 방법이 있습니다. 간단히 Request.executeAndWait()를 사용하십시오. 이 함수는 마치 소리처럼 들리지만, onComplete가 완료 될 때까지 스레드를 멈 춥니 다.