這些時間做的一個下載上傳項目,恰好又看到 DeveloperLx 吐槽使用AFNetworking 和 NSOperationQueue 多么坑的文章。于是想分享下我是怎么做的,不過是使用的
ASIHTTPRequest + NSOperationQueue
github 同步地址:我的github
我實現(xiàn)的效果瀏覽 :

downloadQueue.gif
主要思路
對每一個下載任務 生成一個 Request 添加到 NSOperationQueue 隊列 中,在下載過程中做監(jiān)聽,對相應任務做出相應的暫停,取消,恢復,存檔等操作。界面更新 則使用 block 做監(jiān)聽
核心代碼
代碼不能完全開源,提供關鍵代碼供學習交流
歡迎 Star 沒準兒哪天就開源了 _
NSOperationQueue 下載隊列

data.png
1、 addDownloadMisson 添加下載隊列

addDownloadMisson.png
2、cancelDownloadMisson 取消下載隊列

cancelDownloadMisson.png
3、suspendDownloadMisson 暫停下載隊列

suspendDownloadMisson.png
4、resumeDownloadMisson 恢復下載隊列

resumeDownloadMisson.png
5、addListener 添加監(jiān)聽

addListener.png
ASIFormDataRequest 下載請求




上傳做法是類似的
不過需要做到斷點上傳的話,就有點不同了。
我的做法是 把每個上傳操作封裝成 NSBlockOperation 添加到 NSOperationQueue 上傳隊列中,在封裝成NSBlockOperation的時候把上一次的 token 還有已上傳的數(shù)據(jù)量傳入。 界面更新也是使用 Block做監(jiān)聽就行
如果你有什么想法歡迎與我交流