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

在iOS中为NSURLSession使用后台线程或后台传输服务有很大区别吗,ios,background-process,nsurlsession,Ios,Background Process,Nsurlsession,我基本上是在寻找为什么我们能够使用后台传输服务执行NSURLSession的原因,而我们能够在iOS中执行后台线程 有很大的不同吗?是的,有很大的不同。这是“背景”的两个不同概念 后台NSURLSessionConfiguration将继续运行对其关联NSURLSession任务的查询,即使您的应用不再处于活动状态,即如果用户离开应用并且应用被挂起(或者即使随后在应用的正常生命周期中终止)。后台请求完成后,如果您的应用程序尚未运行,它将在后台重新启动您的应用程序,以便您可以快速处理响应,然后在完

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


有很大的不同吗?

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

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

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

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