今天获取webview页面,要使其在断网情况下也可显示,那么只能使用其缓存机制,webview的缓存相关设置在代码中如下:
WebSettings websetting = webview.getSettings();
websetting.setJavaScriptEnabled(true); //与JS交互
websetting.setDomStorageEnabled(true); //开启DOM形式存储
websetting.setDatabaseEnabled(true); //开启数据库形式存储
String appCacheDir = this.getApplicationContext().getDir("cache", Context.MODE_PRIVATE).getPath(); //缓存数据的存储地址
websetting.setAppCachePath(appCacheDir);
websetting.setAppCacheEnabled(true); //开启缓存功能
websetting.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //缓存模式
websetting.setAllowFileAccess(true);
websetting.setAppCacheMaxSize(size); //设置缓存文件大小,但现在已不再提倡这个方法
关于缓存模式,有五种,根据不同需求可以进行设置:
LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据。
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
LOAD_NO_CACHE: 不使用缓存,只从网络获取数据.
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据。