今天给大家推荐一个不错的开源库,非常的不错,可以突破系统限制,让缓存更简单,更灵活。它就是:CacheWebView。
CacheWebView 是 Android WebView 缓存的自定义实现,通过拦截静态资源进行内存 (LRU) 和磁盘 (LRU)2 级缓存实现缓存。突破系统 WebView 缓存的空间限制,让缓存更简单、更快、更灵活。让网站离线也能正常访问。
compile 'ren.yale.android:cachewebviewlib:1.2.3'
代码里将WebView
改为CacheWebView
或者 layout xml 里修改WebView
为ren.yale.android.cachewebviewlib.CacheWebView
完毕,其他都不用修改。CacheWebView 默认会有内部 cache200M 磁盘缓存空间,20M 内存缓存空间。同时缓存模式是 http 默认的缓存模式
File cacheFile = new File(this.getCacheDir(),"cache_path_name");
CacheWebView.getCacheConfig().init(this,cacheFile.getAbsolutePath(),1024*1024*100,1024*1024*10)
.enableDebug(true);//100M 磁盘缓存空间,10M 内存缓存空间
CacheWebView.cacheWebView(this).loadUrl(URL);//要放在UI线程
或者
CacheWebView.servicePreload(this,URL);//通过启动Service来预加载,不影响UI线程
CacheWebView webview;
webview.setCacheStrategy(WebViewCache.CacheStrategy.FORCE);
webview.getWebViewCache().getStaticRes().addExtension("swf").removeExtension("svg")
.addRamExtension("png").removeRamExtension("html");
webview.setCacheInterceptor(new CacheInterceptor() {
public boolean canCache(String url) {
return true;
}
});
CacheWebView webview;
webview.clearCache();
CacheWebView webview;
webview.loadUrl(URL,getHeaderMap(URL));
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
CacheWebView v = (CacheWebView) view;
v.loadUrl(url,getHeaderMap(url));
return true;
}
CacheWebView webview;
webview.setBlockNetworkImage(true);
CacheWebView webview;
webview.setEnableCache(true);
CacheWebView webview;
webview.setUserAgent("Android");
CacheStatus cacheStatus = webview.getWebViewCache().getCacheFile(URL);
if (cacheStatus.isExist()){
File file = cacheStatus.getCacheFile();
String extension = cacheStatus.getExtension();
}
CacheWebView webview;
webview.destroy();
CacheWebView.getCacheConfig().setEncodeBufferSize(1024);