Okhttp源码分析&实践(七)【 实践环节:Okhttp下载功能的实现】

时间:2022-12-21 17:03:51

到目前为止,okhttp系列课程,我们讲解了http基础知识、webdemo的基本编程实现、okhttp基本框架源码解读、okhttp框架搭建、okhttp基本请求响应实现、okhttp拦截器的实现,本章,我们实现okhttp下载功能。

1.需求思考

实现一个下载模块,我们需要有哪些功能?

  • 单线程下载、多线程下载
  • 下载进度回调
  • 断点下载
  • 下载依赖的框架,允许外界自定义修改,例如可以依赖okhttp,后续我也可以修改为volley等框架
  • 下载缓存模块,使用什么数据结构进行url-cache的数据缓存,并且支持自定义

2.下载框架设计

2.1 外观的设计

下载封装模块,为了方便用户使用,那么最好设计为一个单例类,用户关心的就是需要输入url(下载链接)、downloadcallback(下载进度和数据回调)、threadnum(线程数量),目前我们仅仅考虑到这些。

package com.itbird.okhttpstudy.download