【问题标题】:Android real-time multiplayer: onRoomCreated gets erratic STATUS_NETWORK_ERROR_NO_DATAAndroid 实时多人游戏:onRoomCreated 变得不稳定 STATUS_NETWORK_ERROR_NO_DATA
【发布时间】:2016-05-18 10:21:27
【问题描述】:

问题:onRoomCreated 返回 STATUS_NETWORK_ERROR_NO_DATA 的几率为 5%,我们无法弄清楚。

该游戏在大约 16 个月的开发中运行良好(清单或 Google Play 控制台中没有缺少“权限”的问题),但从 Google Play 服务 29 开始(“据称”...可能无关) ,这种不可预知的行为开始了,它阻止了任何进一步的创建房间的尝试(同样的错误 statusCode 再次出现,即使在重新启动游戏之后也是如此)。

让它再次工作的唯一方法是在 10-15 分钟后重新启动游戏或重新启动设备(通常可以,但并非总是如此)。

问题在 3 个不同的设备上是相同的(这里没有模拟器)。

我们发现这个问题(在 SO 和其他地方)可能与在尝试创建新房间之前未离开房间 (RealTimeMultiplayer.leave(...)) 有关。因此,在尝试创建新房间之前,我们至少要等待“onLeftRoom”结束(加上 3 秒,以防万一)。无济于事。

显然,我们遵循推荐的准则:在 onCreate 中实例化 GoogleApiClient,在 onStart 中实例化 .connect,在 onStop 中实例化 .disconnect(即使 .connect 正在进行中)...

还要注意,因为它应该是“NETWORK_ERROR”,所以我们在每次尝试创建房间之前都会验证 Internet 连接(通过 ping)。

如果您有关于此问题的任何信息,或者如果您知道如何让 Google Play 在此状态代码之后创建房间而不重新启动设备,请告诉我们,因为在此之前我们的发布日期将永远推迟。非常感谢。

【问题讨论】:

    标签: android android-googleapiclient


    【解决方案1】:

    [更新 2]:应用程序被重写以停止自动创建房间(因此请求频率较低),并且......没有......仍然是相同的错误/问题/你命名它......一遍又一遍...然后 Google Play 更新了应用程序“Google Play 游戏”(也许还有“服务”),它有点工作:2 周内只有一个 STATUS_NETWORK_ERROR_NO_DATA ......现在我要睡 2 个月,因为我 [编辑]。

    [UPDATE]:根据this post,STATUS_NETWORK_ERROR_NO_DATA 用于限制请求的频率。因为我们确实自动创建和关闭房间,这可能是明确的答案。当它被验证或没有被验证时,我会再次更新。 我留下这个答案的其余部分,因为虽然它没有直接关系,但不关闭房间也会导致错误。[END OF UPDATE]

    这是对这种不可预测的行为的答案(不是来自 SO,但你们中的一些人可能仍然感兴趣):在“onStart”和“onStop”中,对 Google Play 服务的所有调用/请求(是否使用 mGoogleApiClient)必须在“super.onStart();”之前进行和“super.onStop();”。

    否则“super.onStop();”之后的内容将在结束之前被中断(设备的速度和负载会增加一些随机性),这意味着任何对“.leave”打开房间的调用都将失败,然后阻止创建新房间(因此出现 STATUS_NETWORK_ERROR_NO_DATA 错误)。

    还要注意变量 mGoogleApiClient 不应该被声明为静态的,记得调用“mGoogleApiClient.disconnect();”在“onStop”中(示例“ButtonClicker”在其他地方推荐时不会这样做)。

    【讨论】:

    • 如何在 onstop 被调用时等待回调 onleftroom()? “所以在尝试创建新房间之前,我们至少要等待“onLeftRoom”结束(加上 3 秒,以防万一)。”
    • @skymedium: 当“onStop”被调用时,房间是“左”的(带有.leave(...))但我们不等待 onleftroom() 因为它变得无用创建一个新房间...只有当两个玩家中的一个离开房间(并且应用程序继续运行)时,我们才会等待 onleftroom,因为它是这个特定房间一切都已完成并结束的信号。
    • 我遵循了您的所有指示,但仍然收到 NETWORK_ERROR。您还有其他建议吗?你能分享你的答案的来源吗?
    • 问题(对我们而言)是当您退出应用程序或尝试创建另一个房间时,房间已创建但未正确关闭(使用 .leave(...))。确保在离开房间后等待“onLeftRoom”,以创建一个新房间。在 onDisconnectedFromRoom 之后不要离开房间。很遗憾,我无法分享我们的来源,抱歉。
    • 好的,抱歉,这不是一个有效的答案......问题又回来了......除了这次是设备在一段时间内无法访问互联网,以及何时应用程序启动房间创建失败(尽管互联网访问已通过 2 种不同方式进行验证)。这意味着我们仍然不可能发布我们的游戏,而 2 年的工作对垃圾箱来说是件好事。请帮忙!!!!
    猜你喜欢
    • 1970-01-01
    • 2015-06-19
    • 2017-06-15
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多