gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:52:41 26 4
gpt4 key购买 nike

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

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

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

谢谢!

最佳答案

what happens to these connections and threads if the OS is deciding to destroy my activity?

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

How can I keep a connection on the onSaveInstanceState bundle?

你不能。

The same goes for the threads, do I need to recreate and destroy them upon destroy and when the activity is restored?

如果他们是由 Activity 启动的,那么,是的,请。

if I hold all this state in some static class that represents the game state? If I do so, will then the OS not destroy my threads/connections?

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

关于android - 使用 onSaveInstanceState 在 Android 应用程序中保持线程和连接状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4112573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com