这些时间做的一个下载上传项目,恰好又看到 DeveloperLx 吐槽使用AFNetworking
和 NSOperationQueue
多么坑的文章。于是想分享下我是怎么做的,不过是使用的
ASIHTTPRequest
+ NSOperationQueue
github 同步地址:我的github
我实现的效果浏览 :
downloadQueue.gif
主要思路
对每一个下载任务 生成一个 Request
添加到 NSOperationQueue
队列 中,在下载过程中做监听,对相应任务做出相应的暂停,取消,恢复,存档等操作。界面更新 则使用 block
做监听
核心代码
代码不能完全开源,提供关键代码供学习交流
欢迎 Star 没准儿哪天就开源了 _
NSOperationQueue 下载队列
data.png
1、 addDownloadMisson 添加下载队列
addDownloadMisson.png
2、cancelDownloadMisson 取消下载队列
cancelDownloadMisson.png
3、suspendDownloadMisson 暂停下载队列
suspendDownloadMisson.png
4、resumeDownloadMisson 恢复下载队列
resumeDownloadMisson.png
5、addListener 添加监听
addListener.png
ASIFormDataRequest 下载请求
上传做法是类似的
不过需要做到断点上传的话,就有点不同了。
我的做法是 把每个上传操作封装成 NSBlockOperation
添加到 NSOperationQueue
上传队列中,在封装成NSBlockOperation
的时候把上一次的 token
还有已上传的数据量传入。 界面更新也是使用 Block
做监听就行
如果你有什么想法欢迎与我交流