繁体   English   中英

FB Android-SDK:如何等待直到请求的回调完成

[英]FB Android-SDK: How to wait until callback of request is completed

我正在尝试等待Request回调函数的onCompleted()完成。 但是,在这种情况下, RequestAsyncTask的方法get()总是返回。 因此,在我程序的其他语句中会遇到问题。 println输出始终在数据库查询后显示,并且不等于null 这是我的代码:

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
        if (state.isOpened()) {
            // show authendicated ui
            Log.i(TAG, "Logged in...");
            try {
                Request.newMeRequest(session, new Request.GraphUserCallback() {

                    // callback after Graph API response with user object
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (user != null) {
                            MyApplication.userId = user.getId();
                            System.out.println("User id: " + MyApplication.userId);
                        }

                    }
                }).executeAsync().get();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ExecutionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            boolean isNewUser = !MyApplication.dbConnection.isUidRegistered(MyApplication.userId);

这导致我的数据库查找uid为null 我怎么解决这个问题?

您应该将这部分代码放入:

boolean isNewUser = !MyApplication.dbConnection.isUidRegistered(MyApplication.userId);

在您的请求回调中:

 @Override
public void onCompleted(GraphUser user, Response response) {
    if (user != null) {
        MyApplication.userId = user.getId();
        System.out.println("User id: " + MyApplication.userId);

        boolean isNewUser = !MyApplication.dbConnection.isUidRegistered(MyApplication.userId);
        // here you should continue your work
    }    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM