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、文件缓存

Android初级第十讲之WebView的故事_第1张图片

接入腾讯的浏览器内核:http://x5.tencent.com/doc?id=1004

一般为减少系统内存和泄露危险,采用为webActivity开启新进程,两种方式android:process=":remote"代表归当前进程私有,只有两者可以互相访问;android:process="remote"代表公有进程,其他所有进程均可访问。

如果各位有问题,欢迎提出;后面有想法,再继续补充。

 

你可能感兴趣的:(Android初级)