iOS 中的 NSURLConnection 和多任务处理
我正在使用 NSURLConnection
在 iOS 中异步下载资源。 (它们是大型 PDF 文件,因此在连接速度较慢时需要一些时间。)
现在我正在将我的应用程序从 iOS 3 更新到 iOS 4。由于我的应用程序不支持位置感知、VoIP 和背景音乐,我想我需要做点什么。
那么我的问题是,当前运行的 NSURLConnection 会发生什么情况?当应用程序返回前台时,它是暂停并神奇地恢复,还是直接被杀死?如果是后者,稍后自动恢复的标准策略是什么? NSURLConnection 是否有一个开源子类可以自动执行此操作?
I'm using NSURLConnection
to download resources asynchronously in iOS. (They are large-ish PDF files, so it takes some time on a slow connection.)
Now I'm updating my app from iOS 3 to iOS 4. As my app is none of location-aware, voip, and background music, I guess I need to do something.
My question is, then, what happens to the NSURLConnection
currently running? Is it suspended and magically resumed when the app comes back to the foreground, or is it outright killed? If it is the latter, what is the standard strategy to resume it automatically later? Is there a open-source subclass of NSURLConnection
which automatically does that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以启动最多运行 10 分钟的任务。查看使用
beginBackgroundTaskWithExpirationHandler:
API 来实现此目的。请注意,如果您的任务花费太长时间,它将被操作系统终止。You can start a task that will run for at most 10 minutes. Look at using the
beginBackgroundTaskWithExpirationHandler:
API for this purpose. Just be aware, if your task takes too long, it will be killed by the OS.NSURLConnection 确实被挂起并在应用程序进入前台时再次启动。只要确保在应用程序从挂起状态变为不运行状态时终止连接,如下所示:
The NSURLConnection is indeed suspended and started again when the app enters the foreground. Just make sure you kill the connection if the app moves from suspended to not running like so: