【问题标题】:Suspend sockets connection on applicationWillResignActive or applicationDidEnterBackground?暂停 applicationWillResignActive 或 applicationDidEnterBackground 上的套接字连接?
【发布时间】:2014-05-23 15:57:59
【问题描述】:

我想知道哪个是暂停套接字连接以便稍后恢复它的正确委托,以及为什么。

根据我在其他使用套接字的项目中阅读和看到的内容,applicationWillResignActive 似乎是正确的,但我也注意到它被频繁调用。 (即使显示“Itunes InApp”购买对话框)

我不想在不必要的时候关闭连接。就我而言,在活动状态下,应用程序仍然能够处理套接字,所以如果我在应用程序进入后台时关闭连接应该没有问题,但我不希望应用程序只进入后台没有确保正确关闭连接并错过进程中的消息。

恢复连接时也会发生同样的情况。到目前为止,它在applicationDidBecomeActive 代表上,但在applicationWillEnterForeground 上可能更有意义。

有什么理由使用这个委托吗?

谢谢!

【问题讨论】:

    标签: ios objective-c sockets websocket


    【解决方案1】:

    所以,由于没有人回答,我觉得我应该根据进一步测试添加一些我发现的答案,这样这些问题就不会悬而未决。

    基本上,在应用程序进入后台时暂停/关闭连接并在应用程序进入前台时恢复/重新连接更有意义。

    这背后的原因是 applicationWillResignActive 会经常发生,即使套接字连接仍然可以保持打开状态。当收到任何警报、电话或激活多任务时,应用程序仍处于活动状态且可完全运行。

    这也意味着,如果您使用应用内购买,当系统提示您输入 iTunes 详细信息时,连接将关闭,如果您还使用自己的后端管理这些购买并且需要连接有效。

    据我所知,当应用程序进入后台时,套接字连接不能再保持活动状态,应该安全地在 applicationDidEnterBackground 上关闭它。

    附带说明,请记住确保正确关闭连接,因为您只有大约 5 秒的时间来执行您需要的任何操作,特别是当您正在侦听套接字关闭事件以执行某些操作时。

    再次,这是我的经验。如果您对此事有更多信息,请随时告诉我。

    【讨论】:

      猜你喜欢
      • 2011-04-12
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      相关资源
      最近更新 更多