wifi切换和onDisconnect以及onPeersDisconnected未被触发时,通信丢失

时间:2016-02-28 22:19:06

标签: google-play-services google-play-games

我正在使用Google的示例游戏“ButtonClicker2000”中的代码:https://github.com/playgameservices/android-basic-samples

我有3个机器人在genymotion中运行这个游戏,在我自己的手机上运行一个,从android studio调试它们。我已经到了一个点,在网络问题的情况下,我正试图优雅地处理断开连接。我模拟网络问题的方法是在手机上切换wifi。 (打开或关闭,相同的行为)之后,虚拟设备不再接收来自我的电话的实时消息,并且我的电话不再接收来自其他设备的实时消息。但是,我的手机永远不会进入onDisconnect(),其他设备永远不会进入onPeersDisconnected。如果我在通讯停止后退出手机上的应用程序,onPeerLeft会在其他设备上触发。

如果某个用户在某个时间点进入或超出其无线网范围,可能事件中,如何确保游戏中设备之间的通信不会丢失?如果那是不可能的,我怎么能至少确保onDisconnect事件从违规设备发出并且onPeersDisconnected事件正在触发其他事件?

1 个答案:

答案 0 :(得分:2)

如果我们按照文档所述的内容进行操作,onDisconnect通常会在远程服务出现问题(崩溃或资源问题)时发生。关闭WiFi并不符合这些标准。当参与者与房间断开连接时,会调用[onPeersDisconnected](https://developers.google.com/android/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener#onPeersDisconnected(com.google.android.gms.games.multiplayer.realtime.Room,java.util.List))。

确定onP2PConnected在连接时是否被调用,onP2PDisconnected何时被断开(希望这可以捕获WiFi切换案例),因为我认为当你使用实时多人游戏时更合适

您还可以在文档的Real-time Multiplayer部分阅读更多相关信息。

希望这有帮助!