【问题标题】:iPhone OS 4.0.x - blocking I/O operations in backgroundiPhone OS 4.0.x - 在后台阻塞 I/O 操作
【发布时间】:2010-08-11 11:52:21
【问题描述】:

我目前正在实现一些在后台模式下从 TCP 套接字读取的逻辑。

CFReadStreamRead 函数用于从套接字获取一些数据,现在一切正常。

但我想知道 iPhone OS 4.x 如何在后台模式下处理阻塞 I/O 操作。例如:CFReadStreamRead 函数可能会在等待一些传入数据时阻塞数小时。

后台任务是否有任何官方限制,例如 10 分钟?如果长时间运行阻塞 I/O 操作,我的应用程序会被 iPhone OS 杀死吗?

请注意 - 我没有在后台任务中运行阻塞 I/O 功能。代码本身位于 myUIApplicationDelegateapplicationDidEnterBackground 方法中。

应用程序本身在Info.plst文件中配置了“voip”参数+CFReadStream根据Apple的建议配置了kCFStreamNetworkServiceTypeVoIP参数。

所以基本上这是后台模式下VoIP应用程序的常规场景。

谢谢!

【问题讨论】:

    标签: iphone objective-c multitasking


    【解决方案1】:

    将其替换为sleep(86400),在调试器中附加到它,然后查看它还有多长时间会被杀死。我认为不会那么长;你应该及时回复applicationDidEnterBackground:。它几乎肯定不会给你比beginBackgroundTaskWithExpirationHandler:更多的时间。

    尝试检查[UIApplication backgroundTimeRemaining]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多