2012-09-24 57 views
0

我在可可中實現了一個下載管理器。用戶可以添加多個下載請求,請求管理器將在面板中顯示請求的進度。我遇到了有關隊列中請求暫停/恢復的問題。可可:使用ASIHttpRequest和ASINetwork下載

爲了簡單起見,假設最大併發操作計數爲1,I添加幾個請求與順序:1,2,3,4,5-。如果未中斷,請按順序從1下載到5。假設我暫停了請求1,請求2應該繼續下載。在那段時間裏,我恢復的要求1。因此,請求2結束後,我希望請求1可以請求3.

之前繼續在這裏的問題是:對於單個請求時,我停下了,該請求事實上已被取消。當我恢復請求時,一個新的請求被初始化並開始。在操作隊列中,如果請求已暫停,現在我發送了[self cancel],以便可以啓動下一個請求。但是,如果恢復,我不知道該怎麼辦。取消的請求不能再次添加到隊列中。如果我創建了一個新隊列並將其添加到隊列中,我如何保證像之前一樣的優先級?

請給出關於如何做到這一點的提示。

感謝

回答

0

目前我做我自己的解決方案使用:

  1. 使從ASIHttpRequest繼承了自定義的請求;
  2. 使NAMutableArray包含所有請求;
  3. 如果添加了一個請求,請枚舉數組以查看最大請求是否正在執行。 如果不是,請在自己的隊列中啓動請求。如果超過最大值,只需將該請求添加到陣列中,並將其狀態設置爲waiting;
  4. 如果一個請求正在完成或失敗,通過添加狀態waiting來枚舉數組以查看位於第一個位置的請求;