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

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

我查看了SDK随附的示例蓝牙聊天,所以我没有处理onsaveinstancestate的处理,因此非常不清楚该怎么办。

谢谢!

有帮助吗?

解决方案

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

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

如何在OnSaveInstancestate捆绑包上保持连接?

你不能。

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

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

如果我在代表游戏状态的某些静态类中持有所有这些状态?如果我这样做,那么OS不会破坏我的线程/连接?

请将服务器逻辑(线程,连接,服务器端游戏逻辑)放在Android服务中。请用 startForeground() 为了保持该服务继续 Notification 在途中的状态栏中,用户可以轻松地返回活动,使他们可以停止您的服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top