我基本上找到了为什么当我们能够在iOS中进行后台传输时,我们能够使用后台传输服务执行NSURLSession的原因。
有很大的不同吗?
答案 0 :(得分:3)
是的,这有很大的不同。这是"背景"的两种不同概念。
后台NSURLSessionConfiguration
继续运行查询其关联的NSURLSession
任务,即使您的应用不再有效,即用户离开应用并暂停应用(或者即使随后在应用程序的正常生命周期中终止。完成后台请求后,如果您的应用程序尚未运行,它将在后台重新启动您的应用,以便您可以快速处理响应,然后在您完成后再次暂停/终止它。
另一方面,向后台线程提交内容与主线程并行执行(即不阻止主线程),但在应用程序运行后不会保持运行终止。它用于执行某些慢速任务,使其不会阻塞主线程(即最小化对用户界面的影响)。
在后台线程中运行标准NSURLSession
请求的概念在很大程度上是多余的,因为NSURLSession
总是以异步方式运行。在后台线程上运行它没什么好处。 (当然,如果委托方法和/或完成块在不重要的情况下执行某些操作,则可能会在后台队列上运行,但标准NSURLSession
任务本身已经异步运行。