【问题标题】:Google play services achievement loading via Pending result通过待定结果加载 Google Play 服务成就
【发布时间】:2014-06-06 15:27:55
【问题描述】:

我在这里做的是加载所有成就并将它们保存到本地地图:

这是我的代码

public LinkedHashMap<String,Boolean> getAchievements(){
    final LinkedHashMap<String,Boolean> achievementMap = new LinkedHashMap<String, Boolean>();
    PendingResult<Achievements.LoadAchievementsResult> achievementsResult = Games.Achievements.load(gameHelper.getApiClient(), false);
    achievementsResult.setResultCallback(new ResultCallback<Achievements.LoadAchievementsResult>() {
        @Override
        public void onResult(Achievements.LoadAchievementsResult loadAchievementsResult) {
            if(loadAchievementsResult != null) {
                if (loadAchievementsResult.getStatus().getStatusCode() == GamesStatusCodes.STATUS_OK) {
                    if (loadAchievementsResult.getAchievements() != null) {
                        AchievementBuffer achievementBuffer = loadAchievementsResult.getAchievements();
                        for(Achievement achievement : achievementBuffer){
                            achievementMap.put(achievement.getName(),achievement.getState() == Achievement.STATE_UNLOCKED);
                        }
                        achievementBuffer.close();
                    }
                }
            }

        }
    });
    return achievementMap;
}

一切正常,即使我很确定它不能与返回的 HashMap 一起工作,因为它是空的。据我了解,我只是创建一个空的哈希图,设置一个“监听器”并返回空的哈希图。我认为当数据在未来某个时间点准备好时调用回调,但由于它现在正在工作,我在从这个方法返回之前在 hashmap 中有数据,即使我不等待它或任何东西。不要误会我的意思,我很高兴它的工作如此简单,但我想我不能确定当我返回时数据是否已经写入 hasmap,因此可能会遇到网络连接速度较慢的问题。

我是对的,谁能告诉我,为什么在我从这个方法返回之前调用回调?

可能是这种情况,因为数据以某种方式被缓冲,并且android在设置结果回调时立即调用回调?

【问题讨论】:

    标签: android google-play-services achievements


    【解决方案1】:

    您在 Games.Achievements.load() 请求中将 forceReload 设置为 false,因此它将在大部分时间使用数据缓存。我不确定该方法是否会立即在同一个线程上运行回调,但听起来确实如此。

    如果您不喜欢它的工作方式,您可以随时在自己的单独线程上运行 getAchievemnts(),然后使用 await() 绕过回调。

    Achievements.LoadAchievementsResult 结果=load.await();

    【讨论】:

      猜你喜欢
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多