Android初级第十讲之WebView的故事
Posted 刘兆贤
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android初级第十讲之WebView的故事相关的知识,希望对你有一定的参考价值。
Webview是谷歌提供一种加载网页的方式,随着H5的出现,越来越多的活动页面出现在Webview上,也出现React Native和Weex这样的H5框架。因此关于它,我们专门辟出来一节来讲讲。
缓存模式(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,在两种模式下都使用本地缓存数据。
清除页面缓存的方式:
/**
* 清除WebView缓存
* 为了页面加载速度,由h5主动清除,自身不主动
*/
public void clearWebViewCache()
//清理Webview缓存数据库
try
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
catch (Exception e)
e.printStackTrace();
//WebView 缓存文件
File appCacheDir = new File(getFilesDir().getAbsolutePath() + "/webcache");
File webviewCacheDir = new File(getCacheDir().getAbsolutePath() + "/webviewCache");
//删除webview 缓存目录
if (webviewCacheDir.exists())
deleteFile(webviewCacheDir.getAbsolutePath());
//删除webview 缓存 缓存目录
if (appCacheDir.exists())
deleteFile(appCacheDir.getAbsolutePath());
WebView缓存方式:
1、应用缓存
2、Dom缓存
3、数据库缓存
4、文件缓存
接入腾讯的浏览器内核:腾讯浏览服务--404
一般为减少系统内存和泄露危险,采用为webActivity开启新进程,两种方式android:process=":remote"代表归当前进程私有,只有两者可以互相访问;android:process="remote"代表公有进程,其他所有进程均可访问。
客户端调用h5失败,缺少一句代码(android2js,指安卓调用h5的js方法):
window['android2js'] = android2js
安卓调用js的方法:webview.evaluatejavascript("javascript:android2js()");
带参数:webview.evaluateJavascript("javascript:android2js(\\""params"\\")");
如果各位有问题,欢迎提出;后面有想法,再继续补充。
以上是关于Android初级第十讲之WebView的故事的主要内容,如果未能解决你的问题,请参考以下文章