- 先前修改了服务器web页面,应用中使用WebView来显示这些页面,但是修改web页面后无论怎么刷新,客户端上的页面始终显示修改前的旧页面。百思不得其解,先是怀疑服务器web有cache,就把web服务关闭了,发现还是显示旧页面,那么问题只能出在客户端了,经查看以下目录中有大量跟WebView相关内容
/data/data/$package/cache/webviewCacheChromium /data/data/$package/cache/webviewCacheChromiumStaging /data/data/$package/database/webview.db /data/data/$package/database/webviewCookiesChromium.db /data/data/$package/database/webviewCookiesChromiumPrivate.db
删除这些内容后,再次刷新就可以看到服务器修改的最新web页面了,这些内容就是WebView的cache机制在起作用,WebView的cache机制默认enable状态的。
- cache mode如下,可以通过
android.webkit.WebSettings来设置cache mode : setCacheMode,默认是LOAD_DEFAULT
WebSettings webSettings= webView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
/** * Default cache usage mode. If the navigation type doesn't impose any * specific behavior, use cached resources when they are available * and not expired, otherwise load resources from the network. * Use with {@link #setCacheMode}. */ public static final int LOAD_DEFAULT = -1; /** * Normal cache usage mode. Use with {@link #setCacheMode}. * * @deprecated This value is obsolete, as from API level * {@link android.os.Build.VERSION_CODES#HONEYCOMB} and onwards it has the * same effect as {@link #LOAD_DEFAULT}. */ @Deprecated public static final int LOAD_NORMAL = 0; /** * Use cached resources when they are available, even if they have expired. * Otherwise load resources from the network. * Use with {@link #setCacheMode}. */ public static final int LOAD_CACHE_ELSE_NETWORK = 1; /** * Don't use the cache, load from the network. * Use with {@link #setCacheMode}. */ public static final int LOAD_NO_CACHE = 2; /** * Don't use the network, load from the cache. * Use with {@link #setCacheMode}. */ public static final int LOAD_CACHE_ONLY = 3;
- WebView中有着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即AppCache)。
-
清除缓存
clearCache -
控制cache大小
由于系统API支持,但是我们可以通过式:定时统计缓存大小、按时间顺序删除缓存。
getCacheDir()+文件查找+文件时间比较进行删除
-
所以至此我们知道,如果要开发应用的的cache功能,如果使用的是
WebView来显示html,根本无需自己动手,WebView已经做好了,估计网易新闻的离线就是如此实现的, 但是网易新闻经常有很多离线页面无法查看,估计是bug使然了。
Android WebView缓存浅析
最新推荐文章于 2024-08-18 10:11:13 发布