NSURLSessionDownloadTask - 串行下载多个文件
Posted
技术标签:
【中文标题】NSURLSessionDownloadTask - 串行下载多个文件【英文标题】:NSURLSessionDownloadTask - Serially download multiple files 【发布时间】:2015-02-02 01:19:14 【问题描述】:使用NSURLSessionDownloadTask
连续下载文件列表的最佳做法是什么?
例如,是否最好在上一次下载完成后开始新的NSURLSession
?
- (void)startDownloadWithRequest:(NSURLRequest *)request
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request];
[downloadTask resume];
然后在委托完成后再次调用 -startDownload
并使用不同的请求。
- (void)URLSession:(NSURLSession *)session
downloadTask:(NSURLSessionDownloadTask *)downloadTask
didFinishDownloadingToURL:(NSURL *)location
NSURL *url = [NSURL URLWithString:@"http://asdf.com/Hello_world.pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self startDownload:request];
自上次下载完成时调用-startDownloadWithRequest
以来,这种链接下载的方法是否会导致堆栈随着每个后续请求而增长?
我搜索了 SO 和其他网站,但找不到使用NSURLSessionDownloadTask
串行下载文件的替代方法。
【问题讨论】:
【参考方案1】:如果要执行的任务在配置方面遵循相同的规则,则当然不需要创建新的会话(和配置)对象,例如超时、cookie 和缓存策略等
相反,这会适得其反,你为什么要分配做完全相同的事情的新对象?如果配置没有施加更严格的策略,您甚至可以通过 NSUrlRequest 覆盖会话配置的某些策略。
关于串行下载文件的最佳做法,您的设置看起来很可靠。
【讨论】:
我实际上使用的是 backgroundSessionConfiguration 而不是 defaultConfiguration,但是对于这个示例的 sack,我使用了 defaultConfiguration。我想它仍然可以工作,谢谢。以上是关于NSURLSessionDownloadTask - 串行下载多个文件的主要内容,如果未能解决你的问题,请参考以下文章
NSURLSessionDownloadTask 进度回调不顺畅?
在 NSMutableDictionary 中设置 NSURLSessionDownloadTask
NSUrlSessionDownloadTask - 进入后台时出现didCompleteWithError
iOS开发之网络编程--2NSURLSessionDownloadTask文件下载