我想知道暂停套接字连接以稍后恢复连接的正确委托是什么,以及为什么。
从我在其他使用套接字的项目中读到和看到的,applicationWillResignActive
似乎是正确的,但我也注意到它被调用得太频繁了。(即使在显示"Itunes InApp"购买对话框时)
我不想在没有必要的时候关闭连接。就我而言,在活动状态下,应用程序仍然能够处理套接字,所以如果我在应用程序进入后台时关闭连接,应该不会有问题,但我不希望应用程序只是在没有确保连接正确关闭和错过进程消息的情况下进入后台。
在恢复连接时也会发生相同的情况。到目前为止,它在applicationDidBecomeActive
委托上,但也许在applicationWillEnterForeground
上更有意义。
使用这个委托有什么原因吗?
谢谢!
所以,既然没有人回答,我觉得我应该添加一些我根据进一步测试发现的回答,这样这个问题就不会没有答案了。
基本上,当应用程序进入后台时暂停/关闭连接,当应用程序进入前台时恢复/重新连接更有意义。
这背后的原因是applicationWillResignActive会发生得太频繁,甚至当套接字连接仍然可以保持打开状态时。当收到任何警报,电话或激活多任务时,但应用程序仍然存活并完全运行。
这也意味着,如果你使用应用内购买,当你被提示输入你的iTunes详细信息时,连接将关闭,这可能是一个问题,如果你也用你自己的后端管理这些购买,并需要连接。
从我所看到的,当应用程序进入后台是套接字连接不能再保持活跃,应该是安全的关闭它在applicationDidEnterBackground而不是。
作为旁注,请记住确保连接正确关闭,因为您只有大约5秒的时间来做您需要做的任何事情,特别是如果您正在监听套接字关闭事件来做一些事情。
再说一次,这是我的经验。如果您有关于此事的更多信息,请随时与我联系。