【问题标题】:Maintaining room connection保持房间连接
【发布时间】:2013-07-02 10:28:23
【问题描述】:

我正在使用新的 Google Play 游戏服务在 Android 设备上创建实时多人游戏。 我在游戏和基本机制之间进行了沟通。但是,我现在意识到,只要游戏活动结束,房间就会断开连接。 这让我担心有几个原因:

  1. 游戏很可能是在手机上玩的。来电肯定会导致电话活动出现,从而断开房间并因此断开游戏
  2. 显示器可能会暂停,也会断开连接
  3. 我曾计划在游戏屏幕上显示广告。点击广告会断开与房间/游戏的连接

有没有办法保持与房间的连接,或者可能重新连接到房间(文档似乎明确禁止重新连接)以允许上述中断,同时仍然允许玩家无缝地继续游戏?

谢谢, 抢

【问题讨论】:

  • 附加信息 - 我正在使用 BaseGameActivity 示例类,该类在 Activity 的 onStop() 事件上断开连接。是否会在这里进行一些更改 - 例如在另一个活动的生命周期事件上释放资源,例如 onDestroy?
  • 您可能需要使用服务来防止房间断开连接。
  • 是否有关于使用服务维护房间连接的文档?另一个answer 似乎非常强烈地表明客户端已连接到活动?

标签: android google-play-games


【解决方案1】:

我遇到了同样的问题,但对我来说,这是用户旋转他们的设备时(活动将被破坏,以及与 Google Play 服务的连接)。我认为我的解决方案也应该对你有用。我回答了我自己的问题here

简而言之,这里是口头解释(代码示例见链接):

设备方向更改将破坏MainActivity extends BaseGameActivity,并随之破坏您的游戏状态(即您与 Google Play 服务的连接)。但是,我们可以将所有 GameHelper 代码放入一个“无头”片段(没有 UI 的片段)中,并声明 setRetainInstance(true)。现在,当我们的MainActivity extends FragmentActivity 在方向改变时被销毁,无头片段被停止,甚至分离,但没有被销毁! (onDestroy() 未被调用)当MainActivity 被Android 重新创建时,我们的无头片段会自动重新附加到它。此时,在我们的无头片段中,onCreate() 未被调用。所以onCreate() 是我们连接到 GameHelper 的地方。我们可以在onDestroy() 中断开与 GameHelper 的连接,因为它永远不会被调用,除非 Application 完成(此时可以终止我们的连接)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 2023-03-16
    • 1970-01-01
    • 2017-07-27
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多