我的一個OpenFeint方法來恢復排行榜數據需要一個異步回調到一個方法,該方法應該修改我的一個本地變量(使用一個美妙的黑客)。我現在的問題是,一旦CB被調用,執行繼續,並且由於得分值沒有改變而它返回空指針。任何方式來使所有的東西同步或從主函數返回回調值?在Java中處理異步回調
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
它沒有一個:(http://m.the9.com/ioshelp/Android_en/doc/com/openfeint/api/resource/Leaderboard.GetUserScoreCB.html – 2012-04-27 14:10:05
的的onSuccess不能返回值對於像getScoreboard這樣的上層方法,這就是爲什麼我使用本地vble.onSuccess需要一些時間來運行,同時執行繼續並返回到返回部分。 – 2012-04-27 14:14:01