在日常的Android
开发中,我们可能会有的业务需求界面使用WebView
界面展示。
WebView
的加载速度也是一个令人头疼的问题。有没有解决呢?肯定是有的,我在网上查找WebView
相关的知识点,发现了一个开源库CacheWebView
。
CacheWebView
CacheWebView通过拦截资源实现自定义缓存静态资源。突破WebView缓存空间限制,让缓存更简单。让网站离线也能正常访问。
CacheWebView的特性
- 让WebView缓存空间更大。
- 强制缓存静态资源,这样会更快。
- 想方便的拿到web缓存资源,比如说从缓存中拿页面已经加载过的图片。
引入项目
implementation 'ren.yale.android:cachewebviewlib:2.2.1'
在我发布博客的时候,最新版本是2.2.1
。最新版本请看开源库的wiki
初始化使用
WebViewCacheInterceptorInst.getInstance().init(new WebViewCacheInterceptor.Builder(this));
基础使用
WebViewCacheInterceptor.Builder builder = new WebViewCacheInterceptor.Builder(this);
builder.setCachePath(new File(this.getCacheDir(),"cache_path_name"))//设置缓存路径,默认getCacheDir,名称CacheWebViewCache
.setDynamicCachePath(new File(this.getCacheDir(),"dynamic_webview_cache"))
.setCacheSize(1024*1024*100)//设置缓存大小,默认100M
.setConnectTimeoutSecond(20)//设置http请求链接超时,默认20秒
.setReadTimeoutSecond(20)//设置http请求链接读取超时,默认20秒
.setCacheType(CacheType.NORMAL);//设置缓存为正常模式,默认模式为强制缓存静态资源
WebViewCacheInterceptorInst.getInstance().init(builder);
Debug Log
WebViewCacheInterceptor.Builder builder = new WebViewCacheInterceptor.Builder(this);
builder.setDebug(false);
WebViewCacheInterceptorInst.getInstance().init(builder);
默认开启debug log , TAG="CacheWebView",可以关闭log。
清除缓存
WebViewCacheInterceptorInst.getInstance().clearCache();
混淆代码
#CacheWebview
-dontwarn ren.yale.android.cachewebviewlib.**
-keep class ren.yale.android.cachewebviewlib.**{*;}
#okhttp
-dontwarn okhttp3.**
-keep class okhttp3.**{*;}
#okio
-dontwarn okio.**
-keep class okio.**{*;}
网友评论