下载管理器 思路

下载管理器思路:

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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,185评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,273评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,804评论 4 61
  • 此刻天在下雨 2017-6-7
    书叶随风阅读 1,450评论 0 1
  • 依旧是云彩飞舞的仙界,依旧是热闹非凡的擂台赛,这次我们该谈谈男一号了, 谁是男一号,就是杜金云,他身体里流淌的...
    雨林行者阅读 2,325评论 0 3

友情链接更多精彩内容