即使我杀死了该应用程序,NSURLSessionDownloadTask仍继续下载

时间:2019-04-15 07:11:18

标签: ios objective-c nsurlsession nsurlsessiondownloadtask

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

我希望我杀死该应用后,该应用将不再执行下载任务。

1 个答案:

答案 0 :(得分:1)

我现在已经有了大致的想法。 我在苹果文档中看到了[NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:]的描述:

  

如果iOS应用已由系统终止并重新启动,则该应用可以使用相同的标识符来创建新的配置对象和会话,并检索终止时正在进行的传输状态。此行为仅适用于系统正常终止应用程序。如果用户从多任务屏幕中终止该应用,则系统会取消所有会话的后台传输。此外,系统不会自动重新启动由用户强制退出的应用程序。用户必须明确重新启动该应用程序,然后才能再次开始传输。

因为我使用xcode上的关闭按钮关闭并重新启动我的应用程序,所以苹果文件说:“ iOS应用程序已被系统终止并重新启动。”以这种方式关闭应用程序时,NSURLSessionDownloadTask将不会结束。 如果用户从多任务屏幕上关闭该应用,则系统会取消所有会话的后台传输。

所以我的问题解决了!