下载管理器思路:
1. 实现单个任务的下载
- 实现downloadWithURL 方法,下载单个任务
- 检查服务器上的文件大小
- 检查本地文件大小!
- 从服务器开始下载!
- 从服务器下 实现downloadFile(主线程)
- 通过Connection的代理方法进行下载
- 通过Runloop开启异步下载
- 通过Block通知调用者
需要扩展:通知调用者下载的相关信息
* 1.进度,通知百分比
* 2.是否完成,通知下载保存的路径
* 3.错误,通知错误信息
- (void)downloadWithURL:(NSURL *)url Progress:(void (^)(float progress))progress completion:(void (^)(NSString * filePath))completion failed:(void (^)(NSString * errorMsg))failed
- 实现暂停操作!
通过connection的引用取消我们的连接
2.实现 多个任务的下载
- 仿照AFN 抽取单例对象(Manager)对网络任务进行管理
HKDownloaderManager
- 定义一个下载操作的缓冲池!是用字典保存"下载对象"和"URL"的键值
/** 下载操作的缓冲池 */
@property(nonatomic,strong)NSMutableDictionary * downloaderCache;
- 下载完毕和下载失败我们需要缓冲池删除这个下载操作 利用Block通知外界
- 暂停操作
通过外界传递的错误回调Block来通知暂停任务重复了!
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。