在项目中增加网络加载需要考虑什么?
1、下载器
网络加载的第一步肯定是下载,那么选择一个合适的下载器是十分重要的,这个下载器最好支持什么功能?
-
多线程下载(同时需要服务端支持,下载时可指定range)
-
断点续传
-
通用性(其他位置也可以)
-
任务队列(任务优先级等)
-
暂停、继续
-
下载失败文件处理
2、缓存策略
我们熟知的缓存策略可能就是Glide中的图片三级缓存策略了。其实不止图片,所有的缓存策略基本上就是这三级:
1、 内存缓存
2、磁盘缓存
3、网络(严格意义上来讲,这不算是个缓存)
既然是缓存,就需要考虑缓存的清理策略。我们熟知有的LruCache、DiskLruCache。根据项目的实际情况选择即可。
对于磁盘缓存来说,如果你的项目中已经存在磁盘缓存,可能需要将当前的缓存文件类型,纳入到原来的缓存管理中,进行统一处理。
3、文件校验
为什么需要文件校验,其实有很多原因。但大多数无外乎以下几种:
-
文件完整性。我们加载损坏的文件,肯定是展示不出内容的。除非只损换了padding,也就是字节填充部分的内容
-
文件安全性。我们的文件如果中途被人篡改,我们可以通过此种方式来校验安全性。当然安全性校验一般会通过MD5、SHA256等哈希算法进行校验,会增加读取文件耗时。
-
文件校验失败后的重新下载。一般文件校验失败了,也就证明当前缓存是有问题的,或者中间被人篡改了。这时根据当前文件是缓存还是直接下载的文件,去做对应的处理。如果是缓存文件,会直接删除重新下载,如果非缓存文件,可能提示出错等。