6

我正在为安卓开发一个多人游戏应用程序。其中一位参与者充当主机(创建游戏实例的人),其他每个参与者都使用蓝牙连接到主机。

我的问题如下,该主机运行了一些线程以进行通信并保持所有打开的连接。我已经读到我的活动可以被临时销毁并在以后恢复,我应该为此使用 onSaveInstanceState 机制。但是,我说的是一个充当游戏“服务器”的应用程序,它具有为其他客户端提供服务的开放连接和线程,如果操作系统决定破坏我的活动,这些连接和线程会发生什么?他们被终止了吗?如果是这样,为了正确实现这一点,推荐的模式是什么,如何在 onSaveInstanceState 包上保持连接?它不可序列化。线程也是如此,我是否需要在销毁和恢复活动时重新创建和销毁它们?如果我将所有这些状态保存在某个代表游戏状态的静态类中?如果我这样做,那么操作系统不会破坏我的线程/连接吗?

我查看了 SDK 附带的示例蓝牙聊天,因此没有处理 onSaveInstanceState,因此不清楚我应该做什么。

谢谢!

4

1 回答 1

7

如果操作系统决定破坏我的活动,这些连接和线程会发生什么?

如果您在活动中创建了这些线程,则最好停止这些线程,否则您将泄漏它们。

如何在 onSaveInstanceState 包上保持连接?

你不能。

线程也是如此,我是否需要在销毁和恢复活动时重新创建和销毁它们?

如果他们是由活动开始的,那么,是的,请。

如果我将所有这些状态保存在某个代表游戏状态的静态类中?如果我这样做,那么操作系统不会破坏我的线程/连接吗?

请将您的服务器逻辑(线程、连接、服务器端游戏逻辑)放在 Android 服务中。请使用startForeground()以保持该服务继续运行,并Notification在状态栏中放置一个,以便用户可以轻松地返回允许他们停止服务的活动。

于 2010-11-06T09:51:31.653 回答