【问题标题】:NSURLSession remaning background time in finished download delegate完成下载委托中的 NSURLSession 剩余后台时间
【发布时间】:2013-11-14 09:51:28
【问题描述】:

我正在使用NSURLSession后台下载服务。

如果我的应用程序已暂停并处于后台,并且 NSURLSessionDownloadTask 已完成 NSURLSessionDownloadDelegate 方法

- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location 

被称为记录。

我观察到,每次调用委托方法时,[UIApplication sharedApplication].backgroundTimeRemaining) 都会从开始时的30 秒数减少到一些下载后的0。如果达到0,应用程序将崩溃,并显示“超过允许的时间有活动断言:”。

这意味着我必须处理完成的后台下载(解压缩、移动)的总时间为 30 秒。这可能适用于几个文件,但如果下载包含大量或大 zip 文件,则不适用。

任何 Apple 文档中均未提及此时间间隔。这是NSURLSEssion 框架的限制还是我实现错了?

感谢克里斯蒂安

【问题讨论】:

    标签: objective-c cocoa-touch ios7 nsurlsession


    【解决方案1】:

    您可以使用 -[UIApplication beginBackgroundTaskWithExpirationHandler:] 和 -[UIApplication endBackgroundTask:] 让您的应用运行长时间运行的后台任务。这可能会让您的应用在终止之前有更多的时间在后台运行。

    另一种考虑的可能性是链接您的下载请求,以便在完成并调用您的 URLSession 委托时处理文件并发出下一个下载请求。这样一来,您一次处理的文件不会超过一个(假设处理一个文件不会花费太长时间)。

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多