ios - 代号一 - 设备处于待机状态时套接字关闭

标签 ios sockets codenameone

我正在使用 Codename One 开发一个 iOS 应用程序。我扩展了 SocketConnection 类,以便从服务器接收数据。

我在 iPhone 7s(iOS 版本 11.2.5 15D60)上测试了该应用程序,它运行良好。当我按下主页按钮时,应用程序暂停,但它保持与套接字服务器的连接。但是当设备进入待机模式时,套接字连接将关闭。

是否可以避免这种行为,以保持套接字连接?

最佳答案

简短回答:不,这是一件好事。

长答案:当一个应用程序在 iOS 中暂停时,如果它使用过多的资源,操作系统会终止该应用程序以节省电池生命周期。在某些情况下,Apple 确实允许某些应用程序在后台执行任务,但即便如此,它仍受到严格的限制,难以遵守且经常更改。

通常,您会定义一个后台行为,允许您在后台执行某些操作。例如。在这篇文章中,我们讨论 background fetch这允许您在我们处于后台时继续轮询服务器。它可能不适用于套接字。

就 iOS 而言,“正确的做法”是在后台暂停您的连接,并使用推送通知通知用户可能的更新。

关于ios - 代号一 - 设备处于待机状态时套接字关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50823378/

相关文章:

java - "java.net.BindException: Address already in use"尝试使用与前一个线程相同的新线程创建套接字时

codenameone - 如何读取 Codename One 中的嵌套 JSON

java - 您可以将 JDBC 与代号一一起使用吗?

ios - 如何快速将灰度图像转换为二值图像?

ios - 键入带有 "@"前缀的单词后禁用自动更正,然后在键入新单词时重新启用

c++ - 功能工作定时器

java - BufferedWriter/PrintWriter/OutputStreamWriter 在调用 .close() 之前不刷新缓冲区(通过套接字输出流)

java - 代号一 - 识别正在运行的操作系统应用程序

iOS 崩溃堆栈解密

ios - 我可以解决 UIWebView 中的 iOS 8 Voiceover 错误吗?