[問題] 背景下載
我現在用NSURLSession 裡的 NSURLSessionDownloadTask來實作背景下載
因為下載的檔案有點大,又希望使用者可以儘早的看到下載完的檔案內容
所以另外做了一個Queue去maintain下載順序,希望頻寬都用在一個檔案上
做法就是先把downloadTask new出來([session downloadTaskWithRequest:request])
然後在 didFinishDownloadingToURL 裡讓下一個downloadTask resume
這個做法在前景執行的時候看起來很正常
但放到背景之後 所有被new出來的downloadTask似乎會開始一起佔用頻寬
所以下載完成的時間會差不多.....
我希望他到背景執行的時候還是可以維持FIFO的模式(像KKBox的下載佇列一樣)
另外我有試過在didFinishDownloadingToURL中才new下一個downloadTask
可是在進入背景後 我的寫法看來只會確保進入前new出的downloadTask被執行完
當我有多個大檔案要下載就會很容易出現只載好第一個的狀況
想請問各位前輩有什麼建議呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.40.230
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1453869187.A.78C.html
→
01/27 13:28, , 1F
01/27 13:28, 1F
→
01/27 13:28, , 2F
01/27 13:28, 2F
→
01/27 13:59, , 3F
01/27 13:59, 3F
→
01/27 14:00, , 4F
01/27 14:00, 4F
→
01/27 14:00, , 5F
01/27 14:00, 5F
→
01/27 21:25, , 6F
01/27 21:25, 6F
→
01/27 21:26, , 7F
01/27 21:26, 7F
感謝建議
補上目前作法
方法是開一個operation queue, 設 queue.maxConcurrentOperationCount=1
(為了可以做到FIFO)
然後每一個下載task都在operation裡create
create後 馬上resume,之後放個NSRunLoop,
等到didFinishDownloadingToURL後再break這個Loop
然後系統就會繼續下一個operation
不過測試的時候發現需要有點耐心 需要多等一下
※ 編輯: kuokuo321 (122.116.40.230), 01/28/2016 12:17:19
→
01/28 14:41, , 8F
01/28 14:41, 8F
→
01/28 14:50, , 9F
01/28 14:50, 9F
推
01/28 15:46, , 10F
01/28 15:46, 10F
感謝提醒 以補上
※ 編輯: kuokuo321 (122.116.40.230), 01/28/2016 16:30:54