GameHelper onConnected ConnectionHint已过时

时间:2014-04-05 10:06:51

标签: android

我的应用程序是玩家轮流转换的游戏,它使用BaseGameUtils类和示例中的一些代码。 当用户点击通知时(说明是轮到他的回合),匹配数据会传递给onSignInSucceededonStart GameHelper中的onStop)。问题是当用户离开应用程序并重新进入应用程序时(因此调用onStartonSignInSucceeded),来自(旧)意图的数据将传递给onSaveInstanceState。当用户已经转弯并且棋盘状态发生变化时,这是一个问题,因为他在重新进入后会看到的是他轮到他之前的状态。我尝试将当前状态保存在GameHelper中,但仍未传递给onConnected s onConnected

有没有办法修改@Override public void onSignInSucceeded() { Games.TurnBasedMultiplayer.registerMatchUpdateListener(getApiClient(), this); log("onSingInSucceeded called!"); myPlayerId = Games.Players.getCurrentPlayerId(getApiClient()); TurnBasedMatch match = mHelper.getTurnBasedMatch(); if (match != null) { log("updated match from connection hint"); updateMatch(match); return; } } 收到的提示(并知道提示的来源是什么),或者以某种方式使用提示后解除提示,以便将来重新启动时不再使用它?

也许我可以比较提示的游戏状态和当前的游戏,但这可能并不总是可能的,因为当前游戏不一定是与意图游戏相同的游戏,在那种情况下我不能轻易获得意图匹配的(实际)转数,并将其与意图中存储的转数进行比较。

{{1}}

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案: 我们必须在使用后清除存储的通知数据,因此我们暂时无法使用它:

@Override
public void onSignInSucceeded() {
Games.TurnBasedMultiplayer.registerMatchUpdateListener(getApiClient(), this);

log("onSingInSucceeded called!");
myPlayerId = Games.Players.getCurrentPlayerId(getApiClient());
TurnBasedMatch match = mHelper.getTurnBasedMatch();
mHelper.clearTurnBasedMatch();   //<------------------------This is the solution
if (match != null) {
    log("updated match from connection hint");
    updateMatch(match);
    return;
}
}