在做Webview显示服务器的html功能时 需要加入离线功能。
http://androiddada.iteye.com/
开始思路很狭隘,以为一定应该是从服务器得到的html文件,下载到本地后加载~
但是这样不能离线查看图片,因为图片数据并不再html中,只是连接地址。
后来,经过上网各种搜寻学习,发现原来Webview有自己的缓存,如图:
在手机本地 data/data/包名/cache/webviewCache 中放的是Webview显示过的图片。我们可以把它导出,后缀改成对应图片的格式 打开看看~
而databases中的webviewCache.db 中放的就是图片地址和图片名字对应等信息 的表~ 导出后也可用SQLite Database Browser 等工具查看
1.优先缓存
好了,这里你是不是想问:既然这些图片已经存在手机缓存里面了,为什么Webview不能再把它显示出来呢?
这里我们需要设置下:
WebSettings webSettings= webView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 默认不使用缓存!
LOAD_CACHE_ELSE_NETWORK的意思是:
Use cache if content is there, even if expired (eg, history nav) If it is not in the cache, load from network. Use with setCacheMode(int)
.
如果内容已经存在cache 则使用cache,即使是过去的历史记录。如果cache中不存在,从网络中获取!
所以加上这句,不仅可以使用cache离线显示用户浏览过的内容,还可以在有网络的情况下优先调用缓存,为用户减少流量!~
我有些费解的是,这个设置在我看来是很有利于用户体验的 为什么google不把它设置成默认的呢? 还需要开发者手动打开。猜想可能是因为相同页面可能会更新的原因!
如果离线加载出现乱码 可参考: http://androidturing.iteye.com/blog/1280656
http://androiddada.iteye.com/
2.缓存管理:
(1)clearCacheFolder(Activity.getCacheDir(), System.currentTimeMillis());//删除此时之前的缓存.
// clear the cache before time numDays
private int clearCacheFolder(File dir, long numDays) {
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
if (child.isDirectory()) {
deletedFiles += clearCacheFolder(child, numDays);
}
if (child.lastModified() < numDays) {
if (child.delete()) {
deletedFiles++;
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
return deletedFiles;
}
(2) 退出应用前删除缓存的方法!
File file = CacheManager.getCacheFileBaseDir();
if (file != null && file.exists() && file.isDirectory()) { for (File item : file.listFiles()) { item.delete();
}
file.delete();
}
context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");
- 大小: 10.6 KB
分享到:
相关推荐
本项目“ios-WebView离线缓存.zip”主要探讨的是如何利用YYCache和系统提供的NSURLProtocol实现WebView的离线缓存功能,这对于在网络状况不佳或者无网络环境下的用户体验提升至关重要。 YYCache是由著名iOS开发者...
调试基于WebView的App最舒服的工具Chrome自带的开发者工具,其中有我们熟悉的Dom树调试,JS调试,Network监视等等功能。 Google提供的调试Android上WebView的步骤: 1.开启手机上的USB调试功能并且连接计算机手机端...
5. 设置缓存路径:默认情况下,WebView会自动管理缓存。但如果你想自定义缓存位置,可以通过setDatabasePath()和setAppCachePath()方法设置。 ```java File cacheDir = getCacheDir(); // 获取应用的缓存目录 ...
2.本包主要为了解决调试webview(类似Chrome://inspect的功能)国内404或空白页面的问题。 3.本包内自带Chrome浏览器、离线调试包,用法解压包后文档中会有详细说明亲测保证可用,离线webview调试工具,开发H5混合应用...
下面我们将基于给定的代码示例,详细介绍如何在Android项目中配置WebView以实现离线缓存功能: 1. **启用DOM存储** DOM存储是用于存储HTML5应用数据的一种方式。通过`setDomStorageEnabled(true)`开启该功能,...
`moudle_webviewplus` SDK通过增强WebView的离线缓存功能,极大地提升了Android应用在无网或弱网条件下的用户体验。通过合理的缓存策略和Java接口的灵活使用,开发者可以构建出更加健壮和用户友好的移动应用。
然而,对于H5页面的调试工作,开发者通常依赖于Chrome浏览器的开发者工具(Chrome DevTools),其中的`chrome://inspect`功能可以远程调试连接到同一网络的设备上的WebView。但在中国,由于网络限制,`chrome://...
总结,Android的Webview缓存机制是提高用户体验的关键,正确配置和管理缓存可以显著减少网络请求,加快页面加载速度。通过上述知识点,开发者可以根据具体需求定制Webview的缓存行为,为用户提供更加流畅的浏览体验...
Android WebView 缓存详解 一. 两种缓存类型: 页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器 的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地...
在离线模式下,可以通过设置 `WebView` 的缓存模式为 `LOAD_CACHE_ONLY`,使其只从本地缓存加载网页: ```java webSettings.setCacheMode(WebSettings.LOAD_CACHE_ONLY); ``` 这样,即使没有网络,`WebView` 也能...
本文将深入探讨如何使用WebView实现网络视频的播放,并进一步介绍如何添加离线观看的功能,以便用户在没有网络连接的情况下也能观看已下载的视频。 首先,让我们了解一下WebView的基本用法。WebView是Android SDK中...
这里的缓存策略包括忽略缓存、优先使用缓存、在缓存失效时加载等。 三、自定义缓存策略 有时系统默认的缓存策略可能无法满足特定需求,此时可以自定义缓存策略。例如,创建自己的URLProtocol子类,拦截并处理HTTP...
由于chrome调试android webview出现空白页,或者404错误,因为没有,该工具用于调试android webview
总结,Android的WebView组件提供了丰富的功能,能够加载远程和本地资源,同时支持缓存机制,提高用户体验。开发者需要根据实际需求调整其配置和行为,以实现最佳的加载效果和性能。在处理图片资源时,特别要注意路径...
2. 设置Disk Cache路径:默认情况下,WebView的磁盘缓存存储在应用的私有目录下。但为了更灵活的控制,可以通过`setDatabasePath`来指定自定义的缓存路径。 ```java File cacheDir = new File(context.getCacheDir...
风险管理: 方案通常会对潜在的风险进行评估,并制定相应的风险管理策略。这有助于减轻潜在问题的影响,提高方案的可行性和可持续性。 决策支持: 方案提供了决策者所需的信息和数据,以便做出明智的决策。这种数据...
Webview的使用需要结合具体需求进行配置和优化,合理管理缓存,保障安全和性能。同时,了解并掌握Webview的API和最佳实践,对于提升用户体验和应用质量至关重要。不断学习和探索,才能更好地利用Webview这一强大的...
功能包括: WKWebView的使用、JS和OC的交互、网页内容加载进度条的实现、WKWebView+UITableView混排 、 WKWebView离线缓存等。GitHub:https://github.com/wsl2ls/iOS_TipsiOS_Tips集合简介:1、暗黑模式2、AppleID...
在Android开发中,Webview是一个强大的组件,它允许开发者在应用程序...当网络断开时,Webview将从本地缓存中加载这些资源,从而实现离线应用的功能。这种功能对于提升用户体验,特别是在移动设备上,是非常有价值的。
本文将深入探讨如何构建一个通用的WebView,包括自定义错误页面、缓存数据以及支持离线浏览的功能。 一、自定义错误页面 在使用WebView加载网页时,可能会遇到网络错误、404找不到页面等问题。默认情况下,WebView...