使用onSaveInstanceState在Android应用程序中保持线程和连接状态?

Eit*_*tan 6 android bluetooth android-lifecycle

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

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

我查看了SDK附带的示例蓝牙聊天,因此我没有处理onSaveInstanceState,所以我不知道该怎么办.

谢谢!

Com*_*are 7

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

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

如何在onSaveInstanceState包上保持连接?

你不能.

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

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

如果我在一个代表游戏状态的静态类中保持所有这种状态?如果我这样做,操作系统会不会破坏我的线程/连接?

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