【问题标题】:How to clear cache of NSURLSession when a large file is downloading?下载大文件时如何清除 NSURLSession 的缓存?
【发布时间】:2016-09-28 09:00:35
【问题描述】:

我正在使用 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];        
}

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

【问题讨论】:

    标签: ios nsurlsession download clear-cache


    【解决方案1】:

    尝试使用

    [self.session invalidateAndCancel];
    

    根据文档

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

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

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 1970-01-01
      • 2016-08-13
      • 2017-09-08
      • 2017-03-18
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多