Я пытаюсь запустить фон NSURLSessionDownloadTask. Тем не менее, я заметил, что это займет примерно 30 секунд, прежде чем задача начнется. Когда я использую defaultSessionConfiguration, задача начинается почти сразу. Есть ли способ запустить NSURLSessionDownloadTask сразу же при использовании backgroundSessionConfiguration?Есть ли способ удалить задержку, когда используется [NSURLSessionConfiguration backgroundSessionConfiguration]?
Ниже результат я получаю, когда я использую backgroundSessionConfiguration:
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfiguration:[NSString stringWithFormat:bgIdentifier, self.urlModel.code]];
Вот выход журнала. Обратите внимание, что «Начать загрузку ...» регистрируется непосредственно перед вызовом метода «резюме», а «Выполнение загрузки» регистрируется в методе didSendData NSURLSessionTaskDelegate.
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%
Edit: С прошивкой 7.1, бывают случаи, когда нет никаких задержек. Тем не менее, еще есть моменты, когда есть около 20 секундных задержек.
являются у загрузки нескольких файлов одновременно? – ChenSmile
@Immi nope. В обоих случаях я запускал приложение с нуля, чтобы убедиться, что не было никаких длительных сеансов. – jhk
Зачем вам задержка? «Фон» означает «Эй, система, пожалуйста, сделайте это самостоятельно, когда это удобно». Если вы этого не хотите, не делайте этого. – matt