[问题] 背景下载

楼主: kuokuo321 (kuokuo)   2016-01-27 12:33:03
我现在用NSURLSession 里的 NSURLSessionDownloadTask来实作背景下载
因为下载的档案有点大,又希望使用者可以尽早的看到下载完的档案内容
所以另外做了一个Queue去maintain下载顺序,希望频宽都用在一个档案上
做法就是先把downloadTask new出来([session downloadTaskWithRequest:request])
然后在 didFinishDownloadingToURL 里让下一个downloadTask resume
这个做法在前景执行的时候看起来很正常
但放到背景之后 所有被new出来的downloadTask似乎会开始一起占用频宽
所以下载完成的时间会差不多.....
我希望他到背景执行的时候还是可以维持FIFO的模式(像KKBox的下载伫列一样)
另外我有试过在didFinishDownloadingToURL中才new下一个downloadTask
可是在进入背景后 我的写法看来只会确保进入前new出的downloadTask被执行完
当我有多个大档案要下载就会很容易出现只载好第一个的状况
想请问各位前辈有什么建议呢?
作者: darktt (小朱)   2016-01-27 13:28:00
你的Configuration要改成backgroundSessionConfigurationWithIdentifier
楼主: kuokuo321 (kuokuo)   2016-01-27 13:59:00
在建session的时候有用backgroundSessionConfigurationHTTPConnectionPerHost也设成 1不过来源不一定是同一个Host
作者: springgo (...)   2016-01-27 21:25:00
可以用NSOerationQueue去控制你的download task打错字了 是NSOperationQueue
作者: uranusjr (←這人是超級笨蛋)   2016-01-28 14:41:00
还有一个方法是用 GCD 开个共用 queue 然后设成 serial奇怪我记得这很久之前有讨论过, 但找了很久找不到, 算了
作者: vampirewalk (vampire)   2016-01-28 15:46:00
设 queue.maxConcurrentOperationCount=1 ?

Links booklink

Contact Us: admin [ a t ] ucptt.com