如何在下载大文件时清除NSURLSession的缓存?

时间:2016-05-30 13:42:43

标签: ios nsurlsession downloading clear-cache

我正在使用NSURLSession在后台下载大型视频文件。在这个iOS应用程序中,我实现了暂停,恢复和停止下载功能。

这是我的代码:

in .h

@property (nonatomic, strong) NSURLSessionDownloadTask *downloadTask; 
@property (nonatomic, strong) NSURLSession *session;

in .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];        
}

它适用于大量文件,但有一些不便之处。当我停止下载时,不会释放用于下载的内存,因此应用程序大小将持续用于停止下载任务。

1 个答案:

答案 0 :(得分:0)

尝试使用

[self.session invalidateAndCancel];

根据文档

它将取消所有未完成的任务,然后使会话无效。

此外,您可以获取缓存目录,然后使用循环或其他方式获取并删除其中的文件夹和数据。