ios - iOS 中 NSURLSession 使用后台线程或后台传输服务有很大区别吗

标签 ios background-process nsurlsession

我基本上是在寻找当我们能够在 iOS 中执行后台线程时为什么我们能够使用后台传输服务执行 NSURLSession 的原因。

差别大吗?

最佳答案

是的,有很大的不同。这是“背景”的两种不同概念。

后台 NSURLSessionConfiguration 会继续运行与其关联的 NSURLSession 任务的查询,即使您的应用不再处于事件状态(即,如果用户离开该应用且该应用已关闭)被暂停(或者即使随后在应用程序的正常生命周期过程中终止)。后台请求完成后,如果您的应用程序尚未运行,它将在后台重新启动您的应用程序,以便您可以快速处理响应,然后在完成后再次暂停/终止它。

另一方面,向后台线程提交某些内容会与主线程并行执行(即不会阻塞主线程),但在应用程序终止后不会使其保持运行。它用于以不会阻塞主线程的方式执行一些缓慢的任务(即最小化对用户界面的影响)。

在后台线程中运行标准 NSURLSession 请求的概念很大程度上是多余的,因为 NSURLSession 无论如何总是异步运行。在后台线程上运行它没有什么好处。 (当然,如果委托(delegate)方法和/或完成 block 正在做一些不平凡的事情,您可能会在后台队列上运行它们,但标准 NSURLSession 任务本身已经异步运行。

关于ios - iOS 中 NSURLSession 使用后台线程或后台传输服务有很大区别吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35301693/

相关文章:

ios - swift - 跳跃时暂停动画

linux - 如何从另一个 session 中终止后台任务?

ios - 如何在 iOS 后台运行服务接收本地通知?

ios - NSURLSession 任务取消问题(CFNetwork 内部错误)

ios - 需要有关在 NSFileManager 上创建目录方法的帮助

ios - 使 UIViewController 成为 UITableViewCell 中 UICollectionView 的代表

ios - NSURLSessionDownloadTask cancelByProducingResumeData 与暂停

ios - Swift 3.0 中的 POST 请求

ios - 归档应用程序在管理器屏幕上生成模糊的图标

Python:长时间运行的后台进程的生成或线程?