【发布时间】:2014-02-19 04:24:43
【问题描述】:
我正在尝试运行后台 NSURLSessionDownloadTask。但是,我注意到在任务实际开始之前大约需要 30 秒。当我使用 defaultSessionConfiguration 时,任务几乎立即开始。有没有办法在使用 backgroundSessionConfiguration 时立即触发 NSURLSessionDownloadTask?
以下是我使用 backgroundSessionConfiguration 时得到的结果:
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfiguration:[NSString stringWithFormat:bgIdentifier, self.urlModel.code]];
这里是日志输出。请注意,在调用“resume”方法之前会记录“Start uploading...”,并且在 NSURLSessionTaskDelegate 的 didSendData 方法中记录“Upload progress”。
2014-02-18 20:13:55.403 myapp[396:60b] [DoneViewController] Start uploading...
2014-02-18 20:14:17.699 myapp[396:60b] [DoneViewController] Upload progress - 1%
2014-02-18 20:14:17.704 myapp[396:60b] [DoneViewController] Upload progress - 2%
2014-02-18 20:14:17.705 myapp[396:60b] [DoneViewController] Upload progress - 3%
2014-02-18 20:14:17.706 myapp[396:60b] [DoneViewController] Upload progress - 4%
仅供参考,相同但使用默认会话配置。
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
您可以看到控制台结果没有延迟是这样的:
2014-02-18 19:57:00.552 myapp[376:60b] [DoneViewController] Start uploading...
2014-02-18 19:57:00.707 myapp[376:60b] [DoneViewController] Upload progress - 2%
2014-02-18 19:57:00.710 myapp[376:60b] [DoneViewController] Upload progress - 5%
2014-02-18 19:57:00.711 myapp[376:60b] [DoneViewController] Upload progress - 8%
2014-02-18 19:57:00.711 myapp[376:60b] [DoneViewController] Upload progress - 11%
编辑:在 iOS 7.1 中,有时没有延迟。但是,仍有大约 20 秒的延迟。
【问题讨论】:
-
你一次下载多个文件吗?
-
@Immi 不。在这两种情况下,我都从头开始运行应用程序,以确保没有延迟会话。
-
你为什么关心延迟? “背景”的意思是“嘿,系统,请在方便的时候自己做这个”。如果你不想那样,就不要那样做。
-
@matt ya 这也是对的
-
@matt 我刚买了你的 iOS 7 Programming Fundamentals 书。它消除了我的很多疑问。欣赏你的工作..
标签: ios objective-c nsurlsession nsurlsessionconfiguration