这是正在发生的事情:
- 当状态发生变化时我的程序会更新
- 状态更改的处理程序需要知道用户的 ID 才能继续;它调用 findUserID()
- findUserID() 从 Facebook Graph API 请求用户 ID
- 如果找到该值,则状态更改的处理程序会在该值之前继续进行,因此行为不正确。
- 几秒钟后,跟踪 (Log.d) 显示已找到用户 ID
如果我暂停然后恢复我的程序,则会注意到用户 ID,然后我的程序会正常运行;但是,这不应该需要做。如何让我的程序在继续之前等待 Facebook Graph API 的响应?
protected void findUserID(Session session)
{
//userId = null; // Set initial
// If session is open
if (session != null && session.isOpened()) {
// Make an API call to get user data
// and define a new callback to handle the response
Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
Session session = Session.getActiveSession();
// If current session matches active session
if (session == Session.getActiveSession()) {
if (user != null) {
userId = user.getId(); // set userId
Log.d("internal", "UserId issss: " + userId);
} // end if user != null
} // end if session == Session.getActiveSession()
} // end onCompleted
}); // end request
Request.executeBatchAsync(request); // Request does not execute unless you call this.
Log.d("findUserID", "The value after request: " + userId);
} // end session open check
}
任何/所有帮助表示赞赏。