2010-08-11 30 views
1

我目前正在实现一些逻辑,用于在后台模式下从TCP套接字读取数据。iPhone OS 4.0.x - 在后台阻止I/O操作

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

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

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

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

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

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

谢谢!

回答

0

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

尝试检查[UIApplication backgroundTimeRemaining]