在loadPlayerCenteredScores之后,Google Play游戏服务会暂时崩溃

时间:2013-08-11 22:36:25

标签: android google-play-games

我正在使用Google Play游戏服务在Android上编写游戏。我想让其他玩家使用GamesClient。loadPlayerCenteredScores。问题与获取配置文件图像有关。我使用getScoreHolderIconImageUri()并使用ImageManager.loadImage获取URI。我的图像加载监听器永远不会被调用,游戏服务在通话后停止工作,游戏正常继续(好像游戏服务已断开连接),除了警告之外,我在日志中没有任何错误。  这是代码:

public void PlayersLoader(){
    getMainActivity().getGamesClient().loadPlayerCenteredScores(
            new OnLeaderboardScoresLoadedListener(){
                @Override
                public void onLeaderboardScoresLoaded(int statusCode, LeaderboardBuffer leaderboard, LeaderboardScoreBuffer scores){
                    if(statusCode==0){
                        LeaderboardScore score;
                        String playerId=getMainActivity().getGamesClient().getCurrentPlayer().getPlayerId();
                        ImageManager imMan=ImageManager.create(getContext());
                        for(int i=0;i<scores.getCount();i++){
                            score=scores.get(i);
                            String name;
                            if(score.getScoreHolder().getPlayerId().equals(playerId)){
                                name=getResources().getString(R.string.your_best);
                            }
                            else{
                                name=score.getScoreHolderDisplayName();
                            }
                            Uri imuri=score.getScoreHolderIconImageUri();
                            if(imuri!=null){
                                imMan.loadImage(new ImageLoaded(name),imuri);
                            }
                        }
                        System.out.println("Finish");
                        scores.close();
                        leaderboard.close();
                    }
                }
            },getResources().getString(R.string.HighScores),LeaderboardVariant.TIME_SPAN_ALL_TIME,
            LeaderboardVariant.COLLECTION_SOCIAL,10);
}

}
class ImageLoaded implements OnImageLoadedListener{
String mName;
public ImageLoaded(String name){
    mName=new String(name);

    System.out.println(mName);
            //This does get printed out (the names of the players)
}
@Override
public void onImageLoaded(Uri uri, Drawable drawable){

    System.out.println("imageLoaded"); //This never gets printed out

}
}

这是我在日志中得到的:

//Your Best
//Player 1 Name
//Player 2 Name
//Finished
//Games Services has stopped working dialog in phone, when I click OK, this warning shows:
//*** Unexpectedly disconnected. Severing remaining connections.

如果我删除了ImageManager调用并仅打印出了名称,它们就会被正确打印出来并且没有任何工作停止工作。

我不知道发生了什么,我很绝望。

EDIT 即使我评论这一行:

imMan.loadImage(new ImageLoaded(name),imuri);

错误发生了。 只有当我删除它时它才会停止发生:

Uri imuri=score.getScoreHolderIconImageUri(); 太奇怪了!即使我对imuri没有做任何事情。

编辑我发布了问题here。这似乎是Google Play服务的一个错误。当然他们很快就会解决它!

1 个答案:

答案 0 :(得分:1)

听起来好像你遇到了public bug tracker中描述的同样问题。如果是这样,修复是入站的,事情应该再次工作Real Soon Now [tm]。