2020年最后一周,正准备摸摸鱼回家过年,须不知“惊天阴谋”已在领导层酝酿。竖日,组长带着诡异的微笑向我走来:
组长: “快过年了,你回家路途遥远,要不要请两天假?”
我: “组长,你真是我的知己,想我所想,思我所思,你这么一说我就不客气了,那我就请两天”
组长:“行,请假肯定没问题,我一向很照顾兄弟们!!”(那一刻,一股暖流心中而过,早已将这一年他对我的“压榨”抛之脑后)
“不过我还有个事跟你说下,回家前有个需求你得完成”
我:“what??? ,,,, TMD......”
组长:“需求是这样的:最近客户反应HTML加载有点慢,需要优化下,最好能做到秒开,,,,加油,我相信你”。
我:“不是这H5,加载慢那你前端的原因呀,你找我。。。我。。。”(组长已经远去)
带着沉重的心情开始研究优化,开始在webView 层做文章,开启缓存,预加载,一顿操作效果微乎其微。
然后开始打前端文件的注意,一般本地Html文件加载速度比通过Url的加载速度会快很多。于是去找前端要了一个本地文件放到项目里进行本地加载。果不其然,速度嗖嗖的,此时,尴尬的事情发生了,前端功能经常更新,如果放到项目里岂不是H5更新,我就得升级版本。且不说我得累死,估计这方案提到组长那,他得提刀来见了。 于是另辟蹊径,将通过接口下载HTMl文件,存在到手机本地,这样webView去加载手机本地文件即可。一弧诡异的微笑在脸上散开。
动手: 1.偷了懒,用 filedownloader 去下载了Html压缩文件
implementation 'com.liulishuo.filedownloader:library:1.7.7'
封装下载工具类:
public class FileDownloadUtils {
public static FileDownloadUtils instance = null;
public FileDownloadUtils() {
}
public static FileDownloadUtils getInstance() {
if (null == instance) {
instance = new FileDownloadUtils();
}
return instance;
}
/**
* 单任务下载
*
* @param downLoadUri 文件下载网络地址
* @param destinationUri 下载文件的存储绝对路径
*/
public void startDownLoadFileSingle(String downLoadUri, String destinationUri,FileDownLoaderCallBack callBack) {
FileDownloader.getImpl().create(downLoadUri).setPath(destinationUri).setListener(fileDownloadListener(callBack)).start();
}
// 下载方法
private FileDownloadListener fileDownloadListener(final FileDownLoaderCallBack callBack) {
return new FileDownloadListener() {
@Override
protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
//等待,已经进入下载队列
}
@Override
protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {