我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android WebView 缓存详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android WebView 缓存详解

 Android WebView 缓存详解

一. 两种缓存类型:

页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器 的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。 而缓存的索引放在:/data/data//databases 对应的文件放在:/data/data/package_name/cache/webviewCacheChromunm下
数据缓存:分为AppCache和DOM Storage两种 我们开发者可以自行控制的就是这些缓存资源

AppCache:

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

DOM Storage:

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

二、WebView的5种缓存模式:

LOAD_NO_CACHE: 不使用缓存,只从网络获取数据
LOAD_CACHE_ONLY:  不使用网络,只读取本地缓存数据
LOAD_DEFAULT:  根据cache-control决定是否从网络上取数据
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据

三、WebView缓存模式的设置:

  webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);//或其他模式 

 根据需求缓存策略可为:判断是否有网络  有:使用LOAD_DEFAULT/LOAD_NO_CACHE

  无:使用LOAD_CACHE_ELSE_NETWORK

四、删除缓存数据:

webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.clearCache(true); webView.clearHistory(); webView.clearFormData();public void clearWebViewCache(){  //清理Webview缓存数据库    try {    deleteDatabase("webview.db");    deleteDatabase("webviewCache.db");  } catch (Exception e) {    e.printStackTrace();  }  //WebView 缓存文件    File appCacheDir = new File(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME);  Log.e(TAG, "appCacheDir path="+appCacheDir.getAbsolutePath());  File webviewCacheDir = new File(getCacheDir().getAbsolutePath()+"/webviewCache");  Log.e(TAG, "webviewCacheDir path="+webviewCacheDir.getAbsolutePath());  //删除webview 缓存目录    if(webviewCacheDir.exists()){    deleteFile(webviewCacheDir);  }  //删除webview 缓存 缓存目录    if(appCacheDir.exists()){    deleteFile(appCacheDir);  }}  

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android WebView 缓存详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android WebView 缓存详解

Android WebView 缓存详解一. 两种缓存类型:页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器 的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓
2023-05-31

Android实现WebView删除缓存的方法

本文实例讲述了Android实现WebView删除缓存的方法。分享给大家供大家参考。具体如下: 删除保存于手机上的缓存:// clear the cache before time numDays private int clearCach
2022-06-06

Android WebView的详解及实例

Android WebView的详解 Android WebView在android平台上是一个特殊的View, 他能用来显示网页,这个类可以被用来在你的app中仅仅显示一张在线的网页,还可以用来开发浏览器。 在Androi
2023-05-30

Android图片缓存之Bitmap详解(一)

前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap、BitmapFactory这两个类。 Bitmap: Bitmap是Android系统中的图像处理的最重要类之一。用它可
2022-06-06

Android WebView组件用法详解

本文实例讲述了Android WebView组件用法。分享给大家供大家参考,具体如下: 如果想WebView能够访问网络,必须在AndroidManifest.xml里面添加权限2022-06-06

Android WebView 详解及简单实例

WebView基本使用WebView是View的一个子类,可以让你在activity中显示网页可以在布局文件中写入WebView:比如下面这个写了一个填满整个屏幕的WebView:2022-06-06

详解Android WebView加载html片段

这里我先简单描述一下需求:服务器返回的是html页面的一部分带有标签的内容。解决的思路是:将服务器返回的内容片段拼凑成一个完整的页面。下面直接上核心代码:这里是WebView一些配置WebSettings settings = webVie
2023-05-30

Android VideoCache视频缓存的方法详解

Android VideoCache视频缓存的方法详解项目中遇到视频播放,需要加载网络url,不可能每次都进行网络加载,当然了,就需要用到我们的缓存机制AndroidVideoCacheAndroidVideoCache是一个视频/音频缓存
2023-05-30

Android中巧妙的实现缓存详解

前言 缓存有很多的实现方式,技巧性还有坑都很多,今天我给大家介绍一些非通用的方法,可以巧妙地帮大家简单实现一些内存缓存。 Supplier和MemoizeSQLite是Android里常用的一种数据存储方式,在访问数据库数据时需要通过SQL
2022-06-06

Android WebView线性进度条实例详解

推荐阅读:Android Webview添加网页加载进度条实例详解 先给大家展示下效果图:这个效果图大家一看就懂,在生活经常见到1.wevbview_progressbar.xml2022-06-06

如何解决app内嵌H5 webview 本地缓存问题

小编给大家分享一下如何解决app内嵌H5 webview 本地缓存问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前文APP内嵌H5已经很普遍了,但是每个app
2023-06-09

详解android webView独立进程通讯方式

为什么需要将webView放在独立进程 webView 加载网页的时候可能占用大量内存,导致应用程序OOM。 webView 在访问结束的时候可以直接杀死该进程,防止内存泄漏。 webView 在崩溃的时候不影响主进程。webView
2023-05-30

MySQL 查询缓存详解

文章目录 MySQL 查询缓存介绍MySQL 查询缓存管理和配置MySQL 缓存机制缓存规则缓存机制中的内存管理 MySQL 查询缓存的优缺点优点缺点 MySQL 查询缓存对性能的影响总结 缓存是一个有效且实用的系统性能
2023-08-16

MySQL缓存策略详解

MySQL缓存方案 一、MySQL缓存方案目的分析1.1、缓存层的作用1.2、缓存层选择1.3、场景分析 二、提升MySQL访问性能的方式2.1、MySQL主从复制2.2、读写分离2.3、连接池2.4、异步连接 三、redi
2023-08-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录