1.需求思考
实现一个下载模块,我们需要有哪些功能?
- 单线程下载、多线程下载
- 下载进度回调
- 断点下载
- 下载依赖的框架,允许外界自定义修改,例如可以依赖okhttp,后续我也可以修改为volley等框架
- 下载缓存模块,使用什么数据结构进行url-cache的数据缓存,并且支持自定义
2.下载框架设计
2.1 外观的设计
下载封装模块,为了方便用户使用,那么最好设计为一个单例类,用户关心的就是需要输入url(下载链接)、downloadcallback(下载进度和数据回调)、threadnum(线程数量),目前我们仅仅考虑到这些。
package com.itbird.okhttpstudy.download