我正在使用NSURLSession在后台下载大型视频文件。在此iOS应用程序中,我实现了暂停,恢复和停止下载功能。
这是我的代码:
在.h中
@property (nonatomic, strong) NSURLSessionDownloadTask *downloadTask;
@property (nonatomic, strong) NSURLSession *session;
在.m中
NSURLSessionConfiguration *sessionConfiguration;
float ver = [[[UIDevice currentDevice] systemVersion] floatValue];
if(ver >= 8)
{
sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"sessionID"];
}
else
{
sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfiguration:@"sessionID"];
}
sessionConfiguration.HTTPMaximumConnectionsPerHost = 1;
self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration
delegate:self
delegateQueue:nil];
要停止下载,我正在使用以下方法:
- (void)stopDownloading:(id)sender {
// Cancel the task.
[self.fdi.downloadTask cancel];
}
它在处理大量文件时效果很好,但是不便之处。当我停止下载时,不会释放用于下载的内存,因此对于停止的下载任务,应用程序大小将连续不断。
最佳答案
尝试使用
[self.session invalidateAndCancel];
根据文档
它将取消所有未完成的任务,然后使 session 无效。
另外,您可以获取缓存目录,然后使用循环或其他方式获取并删除其中的文件夹和数据。
关于ios - 下载大文件时如何清除NSURLSession的缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37527221/