Android GameHelper onConnected ConnectionHint已过期
我的应用程序是一款玩家轮流玩的游戏,它使用BaseGameUtils类和示例中的一些代码。 当用户单击通知时(表示轮到他进行匹配),匹配数据将传递到Android GameHelper onConnected ConnectionHint已过期,android,Android,我的应用程序是一款玩家轮流玩的游戏,它使用BaseGameUtils类和示例中的一些代码。 当用户单击通知时(表示轮到他进行匹配),匹配数据将传递到onSigninsAccepted(由GameHelper在onStart中调用)。问题在于,当用户离开应用程序并重新进入应用程序时(因此调用onStop和onStart),来自(旧)意图的数据被传递到onsigninsacceed。这是一个问题,当用户已经轮到了,而电路板的状态发生了变化,因为他重新进入后将看到的是轮到他之前的状态。我试图将当前状态
onSigninsAccepted
(由GameHelper
在onStart
中调用)。问题在于,当用户离开应用程序并重新进入应用程序时(因此调用onStop
和onStart
),来自(旧)意图的数据被传递到onsigninsacceed
。这是一个问题,当用户已经轮到了,而电路板的状态发生了变化,因为他重新进入后将看到的是轮到他之前的状态。我试图将当前状态保存到onSaveInstanceState
,但它仍然没有传递到GameHelper
sonConnected
有没有办法修改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;
}
}
我终于找到了解决办法: 我们必须在使用后清除存储的通知数据,因此我们不能在以后使用它:
@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;
}
}
@覆盖
public void onSignancedAccessed(){
Games.TurnBasedMultiplayer.registerMatchupDataListener(getApiClient(),this);
日志(“已调用!”);
myPlayerId=Games.Players.getCurrentPlayerId(GetApicClient());
TurnBasedMatch match=mHelper.getTurnBasedMatch();
mHelper.clearTurnBasedMatch()//