下载管理器 思路

下载管理器思路:

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来通知暂停任务重复了!

你可能感兴趣的:(下载管理器 思路)