码迷,mamicode.com
首页 > 移动开发 > 详细

android WebView(六)下载和缓存

时间:2015-04-14 13:01:13      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:android   webview   html   javascript   缓存机制   


WebView下载

有时候你所加载的页面有下载链接,如果你需要响应点击后下载的功能则需要进行如下处理:
		webView.setDownloadListener(new DownloadListener() {
			@Override
			public void onDownloadStart(String url, String userAgent,
					String contentDisposition, String mimetype,
					long contentLength) {
				if (url != null && url.startsWith("http"))
				{
					startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
				}
			}


		});

上面代码是调用系统的浏览器进行下载的,无论如何我们通过设置DownloadListener可以监听到下载的事件,并且获取到要去下载的链接url,所以我们完全可以自己去开启线程自己去下载,具体怎么下载我就不多说了。

WebView缓存

如果WebView每次请求都重新加载数据的话,这样就会很耗流量和时间。WebView提供了缓存机制,缓存在data/data下的的文件结构如下:我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下。
技术分享


WebView中存在着两种缓存:网页数据缓存(DOM Storage)、H5缓存(即AppCache)。

AppCache使我们能够有选择的缓冲web浏览器中所有的东西,从页面、图片到脚本、css等等。尤其在涉及到应用于网站的多个页面上的CSS和JavaScript文件的时候非常有用。其大小目前通常是有限制的。在Android上需要手动开启(setAppCacheEnabled),并设置路径(setAppCachePath)和容量(setAppCacheMaxSize)Android中Webkit使用一个db文件来保存AppCache数据(my_path/ApplicationCache.db)

DOMStorage存储一些简单的用key/value对数据。根据作用范围的不同,有Session Storage和Local Storage两种,分别用于会话级别的存储(页面关闭即消失)
和本地化存储(除非主动删除,否则数据永远不会过期)。在Android中可以手动开启DOM Storage(setDomStorageEnabled),设置存储路径(setDatabasePath)
Android中Webkit会为DOM Storage产生两个文件(my_path/localstorage/http_h5.m.taobao.com_0.localstorage和my_path/localstorage/Databases.db)。

5种缓存模式
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,都使用缓存中的数据。
如:www.taobao.com的cache-control为no-cache,在模式LOAD_DEFAULT下,无论如何都会从网络上取数据,如果没有网络,就会出现错误页面;在LOAD_CACHE_ELSE_NETWORK模式下,无论是否有网络,只要本地有缓存,都使用缓存。本地没有缓存时才从网络上获取。

www.360.com.cn的cache-control为max-age=60,在两种模式下都使用本地缓存数据。


android WebView(六)下载和缓存

标签:android   webview   html   javascript   缓存机制   

原文地址:http://blog.csdn.net/w2865673691/article/details/45039553

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!