2013-07-04 54 views
4

我正在使用新的Google Play游戏服务在Android设备上创建实时多玩家游戏。 我有游戏进行和基本力学之间的沟通。不过,我现在已经意识到,任何时候游戏的活动都离开了,房间就会断开。 这涉及我几个原因:维护房间连接

  1. 本场比赛很可能是在手机上播放。一种来电肯定会导致手机的活动上来,切断了房间,因此游戏
  2. 显示可以暂停,也断开
  3. 我曾计划在具有游戏画面上显示的广告。点击广告将与房间/游戏断开

是否有办法维持与房间的连接或可能重新连接到房间(文档肯定似乎无法重新连接)以允许中断,例如同时仍允许玩家无缝继续游戏?

感谢, 罗布

+0

其他信息- 我正在使用在活动的onStop()事件上断开连接的BaseGameActivity示例类。 会在这里做一些改变 - 比如释放另一个活动的生命周期事件的资源,比如说onDestroy? – user2252106

+0

您可能需要使用服务来防止房间断开连接。 –

+0

是否有使用服务维护房间连接的文档? 这个其他[答](http://stackoverflow.com/a/16845784/2252106)似乎很强烈地建议客户端连接到活动? – user2252106

回答

1

我有同样的问题,但对我来说,当用户旋转其设备(活性会被破坏,并与它一起到谷歌的连接播放服务)。我认为我的解决方案也适用于你。我回答我自己的问题here

概括地说,这里的口头解释(见链接的代码示例):

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