我的一个恢复排行榜数据的 OpenFeint 方法需要一个异步回调到一个应该修改我的一个局部变量的方法(使用一个很棒的 hack)。我现在的问题是,一旦调用了 CB,执行将继续,并且由于分数值尚未更改,它返回一个 nullPointer。有什么方法可以使所有内容同步或从主函数返回回调值?
private long getScoreLeaderBoard(String idLeaderBoard) {
for (Leaderboard l : OpenFeintX.leaderboards) {
if (l.name == null)
break;
if (l.resourceID().equalsIgnoreCase(idLeaderBoard)) {
final Score s[] = new Score[1];
l.getUserScore(OpenFeint.getCurrentUser(),
new Leaderboard.GetUserScoreCB() {
@Override
public void onSuccess(Score score) {
s[0] = score;
}
});
if (s[0] != null) // If user has no score onSuccess get a null
return s[0].score;
else
return 0;
}
}
return 0;
}
回调定义: http: //m.the9.com/ioshelp/Android_en/doc/com/openfeint/api/resource/Leaderboard.GetUserScoreCB.html