您的位置:首页 > 移动开发

android WebView(六)下载和缓存

2015-04-14 11:24 302 查看

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,在两种模式下都使用本地缓存数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: