iPhone OS 4.0.x - 在后台阻止I / O操作

时间:2010-08-11 11:52:22

标签: iphone objective-c multitasking

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

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

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

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

请注意 - 我未在后台任务中运行阻止I / O功能。代码本身位于applicationDidEnterBackground的{​​{1}}方法中。

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

尝试检查[UIApplication backgroundTimeRemaining]