在iOS中为NSURLSession使用后台线程或后台传输服务之间是否存在很大差异?

时间:2016-02-09 20:36:37

标签: ios background-process nsurlsession

我基本上找到了为什么当我们能够在iOS中进行后台传输时,我们能够使用后台传输服务执行NSURLSession的原因。

有很大的不同吗?

1 个答案:

答案 0 :(得分:3)

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

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

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

在后台线程中运行标准NSURLSession请求的概念在很大程度上是多余的,因为NSURLSession总是以异步方式运行。在后台线程上运行它没什么好处。 (当然,如果委托方法和/或完成块在不重要的情况下执行某些操作,则可能会在后台队列上运行,但标准NSURLSession任务本身已经异步运行。