使用ASIHTTPRequest与NSOperationQueue实现的下载管理

这些时间做的一个下载上传项目,恰好又看到 DeveloperLx 吐槽使用AFNetworkingNSOperationQueue 多么坑的文章。于是想分享下我是怎么做的,不过是使用的
ASIHTTPRequest + NSOperationQueue
github 同步地址:我的github

我实现的效果浏览 :

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第1张图片
downloadQueue.gif

主要思路

对每一个下载任务 生成一个 Request 添加到 NSOperationQueue 队列 中,在下载过程中做监听,对相应任务做出相应的暂停,取消,恢复,存档等操作。界面更新 则使用 block 做监听

核心代码

代码不能完全开源,提供关键代码供学习交流
欢迎 Star 没准儿哪天就开源了 _

NSOperationQueue 下载队列

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第2张图片
data.png

1、 addDownloadMisson 添加下载队列

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第3张图片
addDownloadMisson.png

2、cancelDownloadMisson 取消下载队列

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第4张图片
cancelDownloadMisson.png

3、suspendDownloadMisson 暂停下载队列

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第5张图片
suspendDownloadMisson.png

4、resumeDownloadMisson 恢复下载队列

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第6张图片
resumeDownloadMisson.png

5、addListener 添加监听

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第7张图片
addListener.png

ASIFormDataRequest 下载请求

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第8张图片

使用ASIHTTPRequest与NSOperationQueue实现的下载管理_第9张图片

上传做法是类似的

不过需要做到断点上传的话,就有点不同了。
我的做法是 把每个上传操作封装成 NSBlockOperation 添加到 NSOperationQueue 上传队列中,在封装成NSBlockOperation的时候把上一次的 token 还有已上传的数据量传入。 界面更新也是使用 Block做监听就行

如果你有什么想法欢迎与我交流

你可能感兴趣的:(使用ASIHTTPRequest与NSOperationQueue实现的下载管理)