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

标签 ios nsurlsession download clear-cache

我正在使用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/

相关文章:

ios - 从 HTTP JSON 树中接收特定信息

Swift - URLSessionUploadTask 在将整个流写入请求正文之前完成请求

powershell - 我可以使用 Invoke-WebRequest 将二进制数据写入文件并仍然获取状态代码吗?

android - 如何停止 IntentService?

c# - 通过 http 下载文件不起作用但通过 https 工作正常

ios - 如何使用FTP直接从iOS将图像上传到服务器目录

ios - 警告 : Incompatible integer to pointer conversion when using NS_ENUM types

ios - 无法在 NSURLSession 委托(delegate)方法中更新用户界面

ios - 快速滑出菜单而不滑动导航栏(以编程方式)

ios - UI KeyboardWillShowNotification 中的栏按钮项目动画