精华帖 (0) :: 良好帖 (2) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-28
在做Webview显示服务器的html功能时 需要加入离线功能。 开始思路很狭隘,以为一定应该是从服务器得到的html文件,下载到本地后加载~ 但是这样不能离线查看图片,因为图片数据并不再html中,只是连接地址。 后来,经过上网各种搜寻学习,发现原来Webview有自己的缓存,如图:
而databases中的webviewCache.db 中放的就是图片地址和图片名字对应等信息 的表~ 导出后也可用SQLite Database Browser 等工具查看
好了,这里你是不是想问:既然这些图片已经存在手机缓存里面了,为什么Webview不能再把它显示出来呢? 这里我们需要设置下:
WebSettings webSettings= webView.getSettings(); webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
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 如果内容已经存在cache 则使用cache,即使是过去的历史记录。如果cache中不存在,从网络中获取!
所以加上这句,不仅可以使用cache离线显示用户浏览过的内容,还可以在有网络的情况下优先调用缓存,为用户减少流量!~
我有些费解的是,这个设置在我看来是很有利于用户体验的 为什么google不把它设置成默认的呢? 还需要开发者手动打开。猜想可能是性能的问题吧···
如果离线加载出现乱码 可参考: http://androidturing.iteye.com/blog/1280656
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-11-29
是不是因为优先调缓存的东西,这样的话有更新的话也不会显示更新,google认为这样不能达到即时性的效果
|
|
返回顶楼 | |
发表时间:2011-11-29
6956886 写道 是不是因为优先调缓存的东西,这样的话有更新的话也不会显示更新,google认为这样不能达到即时性的效果
嗯 确实可能是这样 不适合用于浏览器等应用,但是用在新闻之类的客户端里还是不错的 |
|
返回顶楼 | |
发表时间:2011-11-29
一般情况下不用缓存页面,只有特殊需求的才需要缓存,像大智慧客户端、UC浏览器都是这样的。
|
|
返回顶楼 | |
发表时间:2011-11-30
还 八错。
|
|
返回顶楼 | |
发表时间:2011-12-04
考虑到用户流量问题 好多Android应用都是基于缓存这个思想去设计的
|
|
返回顶楼 | |
发表时间:2011-12-05
而且很多浏览器都是设置关闭的时候自动清除缓存的,既然没有缓存了,为何还要加载。
|
|
返回顶楼 | |
浏览 9648 次