0

新しい Facebook SDK 3.0.1 を実装していますが、Session での使用について疑問があります。

ユーザーIDのみを照会する関数を作成しました:

    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 is ...」のみが表示されるためです。

しかし、内部printlnにはID(ユーザーID XXXXXXXXX)が完全に表示されます。問題は、情報を受け取る時間です。どうすれば制御できますか?

4

2 に答える 2

0

実はこれを回避する方法があります。Request.executeAndWait() を使用するだけです。その関数は、そのように聞こえますが、onComplete が終了するまでスレッドを一時停止します。

于 2013-08-28T18:07:51.947 に答える
0

コントロールできないと思います。「送信が完了する前に他の処理を続行できるようにする」要求である非同期要求を実行しています。(ウィキペディアのページを参照)。メソッドがリクエストオブジェクトによって呼び出される
まで待つ必要があります。onCompleted

于 2013-05-21T13:12:21.787 に答える