리더 보드 데이터를 복구하는 OpenFeint 메소드 중 하나는 멋진 해킹을 사용하여 내 로컬 변수 중 하나를 수정해야하는 메소드에 대한 비동기 콜백이 필요합니다. 내 문제는 이제 CB가 호출되면 실행이 계속되고 스코어 값이 변경되지 않았으므로 nullPointer를 반환합니다. 모든 것을 동기화하거나 메인 함수에서 콜백 값을 반환하는 방법은 없나요?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 –
는 onSuccess는 값을 반환 할 수 없습니다 getScoreboard와 같은 상위 메소드의 경우 로컬 vble을 사용하는 이유입니다. onSuccess는 실행하는 데 약간의 시간이 걸리는 반면 실행은 계속되고 리턴 파트로갑니다. –