在 iOS 中为 NSURLSession 使用后台线程或后台传输服务有很大区别吗
Is there a big difference between using a background thread or a background transfer service for an NSURLSession in iOS
我基本上是在寻找当我们能够在 iOS.
中执行后台线程时,为什么我们能够使用后台传输服务执行 NSURLSession 的原因
有很大区别吗?
是的,有很大的不同。这是 "background".
的两个不同概念
后台 NSURLSessionConfiguration
继续 运行 查询其关联的 NSURLSession
任务,即使您的应用程序不再处于活动状态,即如果用户离开了应用程序和应用程序被暂停(或者即使随后在应用程序的正常生命周期过程中终止)。后台请求完成后,如果您的应用尚未 运行ning,它将在后台重新启动您的应用,以便您可以快速处理响应,然后在您需要时再次 suspend/terminate完毕。
另一方面,向后台线程提交内容会与主线程并行执行(即不会阻塞主线程),但不会在 运行之后保留它该应用程序已终止。它用于以不会阻塞主线程的方式执行一些缓慢的任务(即最小化对用户界面的影响)。
在后台线程中 运行ning 标准 NSURLSession
请求的概念在很大程度上是多余的,因为 NSURLSession
总是 运行 是异步的。 运行将它放在后台线程上没有什么好处。 (当然,如果委托方法 and/or 完成块 运行 正在做一些不平凡的事情,你可能会在后台队列中使用它们,但是标准 NSURLSession
任务本身已经 运行 异步。
我基本上是在寻找当我们能够在 iOS.
中执行后台线程时,为什么我们能够使用后台传输服务执行 NSURLSession 的原因有很大区别吗?
是的,有很大的不同。这是 "background".
的两个不同概念后台 NSURLSessionConfiguration
继续 运行 查询其关联的 NSURLSession
任务,即使您的应用程序不再处于活动状态,即如果用户离开了应用程序和应用程序被暂停(或者即使随后在应用程序的正常生命周期过程中终止)。后台请求完成后,如果您的应用尚未 运行ning,它将在后台重新启动您的应用,以便您可以快速处理响应,然后在您需要时再次 suspend/terminate完毕。
另一方面,向后台线程提交内容会与主线程并行执行(即不会阻塞主线程),但不会在 运行之后保留它该应用程序已终止。它用于以不会阻塞主线程的方式执行一些缓慢的任务(即最小化对用户界面的影响)。
在后台线程中 运行ning 标准 NSURLSession
请求的概念在很大程度上是多余的,因为 NSURLSession
总是 运行 是异步的。 运行将它放在后台线程上没有什么好处。 (当然,如果委托方法 and/or 完成块 运行 正在做一些不平凡的事情,你可能会在后台队列中使用它们,但是标准 NSURLSession
任务本身已经 运行 异步。