Android高手进阶教程(二十四)之---Android WebView的缓存!!!

WebView缓存问题 《Android WebView 缓存机制与问题解决方案》 本文详解 WebView 缓存机制,包括 AppCache、HTTP 缓存、DOM 存储和 Cookies 四种类型,重点分析缓存未更新、占用空间过大等常见问题。针对 Android 4.4+ 的 Chromium 引擎特性提供适配方案,给出强制刷新、缓存清理、离线配置等实用代码示例,并强调服务器响应头设置的重要性。通过权限声明、缓存限制和定期清理等方法优化缓存管理,适用于不同 Android 版本的应用开发。(149字) 阅读详情

各位读者大家好,最近比较忙好久没有写blog了,今天挤点时间和大家分享一下Android中WebView的缓存。我们在项目中也时常会用到WebView这个控件,当我们加载html时候,会在我们data/应用package下生成database与cache两个文件夹如下图如示:

 

我们请求的url记录是保存在webviewCache.db里,而url的内容是保存在webviewCache文件夹下.

为了让大家更容易理解,我做一个简单的例子,我定义一个html文件,在里面加载了一个淘宝的衣服图片的url,用WebView加载出来,然后再试着从缓存里把这张图片读取出来。

下面大家可以按照我的步骤一步一步来实践:

第一步:新建一个Android工程命名为WebViewCacheDemo.目录结构如下:

第二步:在assets目录下新建一个html文件,命名为index.html,(这里加载了一个淘宝的图片):

http://img04.taobaocdn.com/imgextra/i4/608825099/T2nGXBXXpaXXXXXXXX_!!608825099.jpg_310x310.jpg

 

 

第三步:修改main.xml布局文件一个WebView控件一个Button(点击加载缓存图片用),代码如下:

 

第四步:修改主核心程序WebViewCacheDemo.java,这里我只加载了index.html文件,按钮事件暂时没写,代码如下:

 

第五步:在AndroidMainifest.xml文件中加访问网络的权限:

运行效果如下:

此时我们在WebViewCache.db里的cache.table里多了一条记录如下图所示:

在cache/webviewCache/目录下多了一个10d8d5cd文件,刚好和cache.table里的filepath,我们可以断定这个文件就是我们从网上拽下来的图片:

 

为了验证猜想,我给Button增加事件响应,就是弹出Dialog,里面加载缓存的图片,完整代码如下:

 

 

 

第六步:再次运行工程,点击button按钮,效果如下图所示:

OK,验证成功,呵呵,今天只是一个简单的小例子加深大家理解,实际应用肯定比这个复杂的多,希望对大家有所帮助,谢谢!

Android WebView清除缓存:一步步实现缓存清理功能 在开始清除WebView缓存之前,我们首先需要检查设备的网络连接状态。在Android应用开发中,WebView是一个强大的工具,可以在应用中展示网页内容。然而,有时候我们需要在WebView中清除缓存,以确保最新的内容能够正确地显示出来。这样,我们就完成了Android WebView的缓存清理功能的实现。通过检查网络连接状态、创建WebView实例、清除缓存以及重新加载网页内容,我们可以确保WebView中显示的内容是最新的。接下来,我们需要创建一个WebView实例,并加载需要显示的网页内容。 阅读详情

相关推荐

Android WebView缓存机制与实践

在移动应用开发中,WebView组件允许用户在应用内部直接浏览网页。缓存则是WebView为了提高页面加载速度和改善用户体验而采用的一种技术,它通过保存已访问页面的数据到设备上,当用户再次访问相同内容时,WebView可以直接从缓存中读取数据,而无需从网络重新下载。缓存是一种临时存储技术,它可以在互联网应用中快速地提供数据访问。在Web开发中,尤其是在使用WebView时,缓存可以显著提高应用的加载速度,减少服务器负载,提升用户体验。

weixin_42437253的博客 1529

Android WebView的默认缓存策略

今天测试反馈,前端更新了H5的内容,但是客户端通过webview的方式打开后,发现内容没有更新,使用charles抓包,发现客户端访问访问时,连请求都没法发出。于是测试的妹子在企业微信中@我,看到消息有点懵,记得去年就排查过webview的缓存方式,怪没有记录,今天决定把问题重新记录一下。

Fantasy 6525

Android WebView 缓存详解

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

Android 之 WebView 缓存问题

根据以上两种模式,建议缓存策略为,判断是否有网络,有的话,使用LOAD_DEFAULT, 无网络时,使用LOAD_CACHE_ELSE_NETWORK。接下来堆码时间!

leyang0910的博客 1928

电机控制实战:SVPWM五段式与七段式算法在STM32上的实现对比

本文深入对比了SVPWM五段式与七段式算法在STM32上的实现效果,详细分析了两种算法在占空比控制、开关损耗和波形质量等方面的差异。通过实测数据,为工程师提供了针对不同应用场景的选型建议,包括电池供电设备和高精度伺服控制系统的优化方案。

h6i7j8的博客 584

告别手动调参!PSCAD 4.2的Multiple-Run功能,5分钟搞定交流故障批量仿真

本文详细介绍了PSCAD 4.2的Multiple-Run功能如何高效处理交流故障批量仿真,告别传统手动调参的低效模式。通过五步配置法,工程师可在5分钟内完成数百次参数组合的仿真,显著提升电力系统分析效率。文章还包含工业级应用案例和高级调试技巧,助力实现故障仿真的自动化与智能化。

weixin_42552716的博客 276

WebView的缓存机制

在构造函数中,我们指定了缓存目录和缓存大小。其中,`setAppCacheEnabled(true)`表示开启缓存,`setAppCacheMaxSize()`表示设置缓存大小,`setCacheMode()`表示设置缓存模式。- 如果网页内容不经常更新,可以使用`LOAD_CACHE_ELSE_NETWORK`模式,以便快速加载缓存内容。- `LOAD_CACHE_ELSE_NETWORK`:只要本地有缓存,无论是否过期,都使用缓存。- `LOAD_NO_CACHE`:不使用缓存,只从网络获取数据。

YDHIT的博客 5072

安卓-折叠屏平行视界适配(多厂商兼容与优先级实战)

本文详细解析了安卓折叠屏平行视界适配的现状与挑战,重点探讨了多厂商兼容性策略和优先级冲突的实战解决方案。通过对比Google的Embedding方案和国内厂商的EasyGo标准,提供了检测设备支持方案、处理优先级冲突及双方案共存的最佳实践,帮助开发者高效完成折叠屏适配。

weixin_29190169的博客 163

android 读取WebView缓存及清理WebView缓存

WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源)、H5缓存(即appcache)。 一、网页缓存 1、缓存构成 /data/data/package_name/cache/ /data/data/package_name/database/webview.db /data/data/package_name/database/webviewCache.db 在

程序员 5万+

(超详细)互补格雷码+相移码求解包裹相位(Python实现)

记录实现“互补格雷码+相移码”求解包裹相位的编码过程。也可以叫它“5+4”法,5代表五幅格雷码图像,4代表四步相移法的四张正弦条纹图。

暴雨梨花博客 3万+

【Shader】Unity批量更换Shader

在Unity开发中,因为渲染管线问题,经常会遇到需要大量更改shader的问题,本篇文章讲述批量更换Shader的工具。

憨辰 1466

Android清除WebView缓存

用过WebView的同学都清楚,WebView默认是会自动缓存网页资源的。虽然前端H5网页有自己一套缓存机制(不懂的同学,可以看看这篇文章手把手教你构建 Android WebView 的缓存机制 & 资源预加载方案),但是在某些场景下,还是需要原生主动去做清除缓存操作,即清除WebView的缓存。大多数文章都会说,使用下列的方法就可以清除了。

Fantasy 6322

深入GD32/STM32引脚复用:你的JTAG/SWD接口是怎么‘消失’的?一次讲清原理与预防

本文深入解析GD32/STM32调试接口(JTAG/SWD)突然失效的原理与预防措施。通过分析MCU启动流程、引脚复用机制及典型错误代码模式,揭示调试接口'消失'的根本原因,并提供硬件设计检查清单、软件防护代码及开发流程优化方案,帮助开发者有效避免烧录失败问题。

weixin_42532938的博客 369

安卓使用WebView清除缓存

Android 清除WebView缓存 最近项目中需要用WebView显示内容,需要使用JavaScript去交互,但是每次加载都加载到了缓存的数据,这里记录一下如何去清除WebView缓存。 首先要了解一些概念。WebView的缓存可以分为页面缓存和数据缓存:1,页面缓存: >指加载一个网页时的html、JS、CSS等页面或者资源数据。 >这些缓存资源是由于浏览器的行为而产生,开发者只能通过配

liwei123liwei123的博客 2万+

微调实操一: 增量预训练(Pretraining)

《微调入门篇:大模型微调的理论学习》我们对大模型微调理论有了基本了解,这篇结合我们现实中常见的场景,进行大模型微调实操部分的了解和学习,之前我有写过类似的文章《实践篇:大模型微调增量预训练实践(二)》利用的MedicalGPT的源码在colab进行操作, 由于MedicalGPT代码比较难以理解,而且模型只能从hugging face上下载,对于一些国内服务器无法访问,我重构了代码,让训练代码更有可读性,并参考LLAMAFactory的项目,增加了modelscope上下载模型,轻松在国内服务器运行.

youbingchen的博客 6993

Python在振动信号处理中的应用(一):振动信号消除多项式趋势项

文章目录一、概述二、最小二乘法去除趋势项原理三、python模块介绍3.1 scikitlearn简介(1)转化器(Transformer)(2)估计器(Estimator)3.2 线性回归LinearRegression3.3 多项式PolynomialFeatures3.4 工作流Pipeline四、python代码实现4.1 构造模拟信号4.2 编写去除趋势项主代码4.3 展示算法效果五、TIPS 一、概述   在振动测试过程中,传感器或采集设备由于自身性能问题或受环境干扰(如温度、供电等影响),容易

白银时代的博客 8578

Android WebVIew缓存机制详解

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

Ever69的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: Android高手进阶教程(二十三)之---Android中的日历读写操作!!!
下一篇: Android应用开发完全退出程序的通用方法!!!
Android_Tutor
博客等级 码龄17年 1万+粉丝 122原创
评论 44
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值