我目前正在实现一些逻辑,用于在后台模式下从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应用的常规场景。
谢谢!
答案 0 :(得分:0)
将其替换为sleep(86400)
,在调试器中附加到它,并查看在您被杀之前的时间。我认为这不会那么久;你应该及时回复applicationDidEnterBackground:
。它几乎肯定不会给你比beginBackgroundTaskWithExpirationHandler:
更多的时间。
尝试检查[UIApplication backgroundTimeRemaining]
。