我的应用程序是玩家轮流转换的游戏,它使用BaseGameUtils类和示例中的一些代码。
当用户点击通知时(说明是轮到他的回合),匹配数据会传递给onSignInSucceeded
(onStart
GameHelper
中的onStop
)。问题是当用户离开应用程序并重新进入应用程序时(因此调用onStart
和onSignInSucceeded
),来自(旧)意图的数据将传递给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}}
答案 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;
}
}