android WebView(六)下载和缓存

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,在两种模式下都使用本地缓存数据。

时间: 2024-11-10 18:28:38

android WebView(六)下载和缓存的相关文章

手把手教你构建 Android WebView 的缓存机制 & 资源预加载方案

前言 由于H5具备 开发周期短.灵活性好 的特点,所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发 但我知道你一定在烦恼 Android Webview 的性能问题,特别突出的是:加载速度慢 & 消耗流量 今天,我将针对 Android Webview 的性能问题,提出一些有效解决方案. 目录 1. Android WebView 存在什么性能问题? Android WebView 里 H5 页面加载速度慢 耗费流量 下面会详细介绍. 1.

android:强大的图片下载和缓存库Picasso

1.Picasso简介 Picasso是Square公司出品的一个强大的图片下载和缓存图片库.官方网址是:http://square.github.io/picasso/ 只需要一句代码就可以将图片下载并设置到ImageView上. Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 2.主要特点 2.1Adapter downloads 使用ListView,GridView的时候

Android图片下载以及缓存框架

实际开发中进行图片下载以及缓存的框架 介绍一下开发中常见图片加载框架的使用和对比一下优缺点. 1.Picasso 框架 在Android中开发,常需要从远程获取图片并显示在客户端,当然我们可以使用原生HttpURLConnection和AsyncTask等操作来完成,但并不推荐,因为这样不仅需要我们编写大量的代码, 还需要处理缓存和下载管理等,最好自己封装成库或者采用第三方库: 使用HttpUrlConnection和AsyncTask实现远程图片下载: 使用HttpUrlConnection和

Android WebView 缓存处理

加载html时,会在data/应用下生成database和cache两个文件夹:请求的url存在webviewcache.db下面,url的内容保存在webviewCache下面, Webview的两种缓存:网页数据缓存(存储打开的页面及资源),另一种则是h5转存,即appcache: 一.网页缓存 1.缓存构成 /data/data/package_name/cache/ /data/data/package_name/database/webview.db /data/data/packag

Android WebView使用详解包括js互调

目前很多android app都内置了可以显示web页面的界面,会发现这个界面一般都是由一个叫做WebView的组件渲染出来的,学习该组件可以为你的app开发提升扩展性. 先说下WebView的一些优点: 可以直接显示和渲染web页面,直接显示网页 webview可以直接用html文件(网络上或本地assets中)作布局 和JavaScript交互调用 一.基本使用 首先layout中即为一个基本的简单控件: <WebView android:id="@+id/webView1"

android WebView详解,常见漏洞详解和安全源码

这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以及针对该源码的解析. 由于博客内容长度,这次将分为上下两篇,上篇详解 WebView 的使用,下篇讲述 WebView 的漏洞和坑,以及修复源码的解析. 下篇:android WebView详解,常见漏洞详解和安全源码(下) 转载请注明出处:http://blog.csdn.net/self_study/article/details/54928371. 对技术感兴趣的同鞋加群 54

android WebView详解,常见漏洞详解和安全源码(下)

上篇博客主要分析了 WebView 的详细使用,这篇来分析 WebView 的常见漏洞和使用的坑. 上篇:android WebView详解,常见漏洞详解和安全源码(上) 转载请注明出处:http://blog.csdn.net/self_study/article/details/55046348 对技术感兴趣的同鞋加群 544645972 一起交流. WebView 常见漏洞 WebView 的漏洞也是不少,列举一些常见的漏洞,实时更新,如果有其他的常见漏洞,知会一下我-- WebView

Android WebView使用深入浅出

目前很多android app都内置了可以显示web页面的界面,会发现这个界面一般都是由一个叫做WebView的组件渲染出来的,学习该组件可以为你的app开发提升扩展性. 先说下WebView的一些优点: 可以直接显示和渲染web页面,直接显示网页 webview可以直接用html文件(网络上或本地assets中)作布局 和JavaScript交互调用 一.基本使用 首先layout中即为一个基本的简单控件: <WebView android:id="@+id/webView1"

Android记录25-WebView实现离线缓存阅读

Android记录25-WebView实现离线缓存阅读 前言 本篇博客要实现的是一个离线下载和离线阅读的功能,这是很多阅读类app都常见的一个功能,典型的应用就是网易新闻.什么是离线下载?其实这个概念是比较模糊,是离线之后下载呢,还是下载之后离线,但稍微有点脑子的人都知道没有网络之后怎么下载呢?所以离线下载这个功能是"在有网络的情况下,把资源下载到本地",离线阅读就是"在没有网络或者网络不好的时候,阅读本地好缓存的文章资源".这样就很清楚我们要的这两个具体的功能需求

(二) Android Webview 深入 (上)

1 Android 利用 WebView 实现在 js 中调用 android 代码 在 java 或 android 中,接口占有很大比重,做程序员当然要对接口了解了,哈哈! android 和 js 看似牛马不相及,但是由于 WebView 的连接在 js 中就能够调用 android 写的代码实现 android 的功能! android 和 js 就像 java 和c/c++靠 jni 连接似的,二者也是靠接口连接.不 废话了,下面就以一个简单的案例讲述一下在 js 中调用 androi