我正在使用NSURLSessionDownloadTask
下载网络文件。
当我使用[NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:]
创建NSURLSessionConfiguration
时,我发现NSURLSessionDownloadTask
继续下载,即使我终止了该应用程序。
这不是我期望的,我只希望它在后台下载。我不想杀死该应用程序,它仍在下载中。
NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"DDDownloader"];
config.timeoutIntervalForRequest = 10;
self.session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithURL:[NSURL URLWithString:downloadModel.url]];
[downloadTask resume];
我希望我杀死该应用后,该应用将不再执行下载任务。
答案 0 :(得分:1)
我现在已经有了大致的想法。
我在苹果文档中看到了[NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:]
的描述:
如果iOS应用已由系统终止并重新启动,则该应用可以使用相同的标识符来创建新的配置对象和会话,并检索终止时正在进行的传输状态。此行为仅适用于系统正常终止应用程序。如果用户从多任务屏幕中终止该应用,则系统会取消所有会话的后台传输。此外,系统不会自动重新启动由用户强制退出的应用程序。用户必须明确重新启动该应用程序,然后才能再次开始传输。
因为我使用xcode上的关闭按钮关闭并重新启动我的应用程序,所以苹果文件说:“ iOS应用程序已被系统终止并重新启动。”以这种方式关闭应用程序时,NSURLSessionDownloadTask将不会结束。 如果用户从多任务屏幕上关闭该应用,则系统会取消所有会话的后台传输。
所以我的问题解决了!