文档章节

Android WebView加载缓存文件失败的原因记录

叶大侠
 叶大侠
发布于 2014/12/17 13:26
字数 372
阅读 189
收藏 0

最近在开发中碰到当手机没有网络的时候,WebView加载本地缓存出了问题,界面变得很乱,初步断定是样式表没有加载上来。

WebView的缓存策略是这样的:webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);

也就是有网络请求新内容,没有网络加载本地缓存内容。

由于css文件和js都是独立文件,于是怀疑独立的css和js文件WebView不缓存?

于是做了个实验,这是Html的内容,注意css是相对路径。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link href="/hello.css" rel="stylesheet" type="text/css">
    <title>测试缓存</title>
</head>
<body>
    <p id="content">
       Hello, World !<br/>
       Hello, World !<br/>
    <p>
</body>
</html>

依旧地是css文件在没有网络的时候没有加载上来,为了进一步看到原因,我打开了该应用的webview缓存数据库。也就是/data/data/your app/databases/webviewCache.db文件。

我惊讶地发现有缓存了下来,而且可以肯定对应在files目录下的51d26c9d文件就是缓存的css文件。缓存都有了,那为什么WebView没加载呢?

相信大家都有了答案了,原因就是由于资源的相对路径,没有和缓存数据库中的绝对路径匹配上。

所以在这里建议服务端程序员在返回结果时,要尽量使用绝对路径,这样会减少很多不必要的麻烦。

© 著作权归作者所有

共有 人打赏支持
叶大侠

叶大侠

粉丝 57
博文 44
码字总数 67312
作品 5
广州
程序员
Android WebView:这是一份 详细 & 易懂的WebView学习攻略(含与JS交互、缓存构建等)

前言 现在很多里都内置了Web网页(),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是里一个叫组件实现 今天,我将献上一份全面 & 详细的 攻略,含具体...

Carson_Ho
05/21
0
0
Android WebView:这是一份全面 & 详细的WebView学习指南

前言 现在很多里都内置了Web网页(),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是里一个叫组件实现 今天,我将献上一份全面 & 详细的 攻略,含具体...

carson_ho
04/19
0
0
Android Hybrid开发:这是一份详细 & 全面的WebView学习攻略

前言 现在很多里都内置了Web网页(),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是里一个叫组件实现 今天,我将献上一份全面 & 详细的 攻略,含具体...

Carson_Ho
06/19
0
0
Android:最全面的 Webview 详解

前言 现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。今天我将全面...

临江仙卜算子
07/07
0
0
WebView深度学习(一)之WebView的基本使用以及Android和js的交互

前言:随着市场需求的不断变化,原生安卓已经无法满足客户的需要了,现在很多app都在使用Android和h5的交互实现某些功能,比如商品详情页,文章详情页面,商品点评页面,还有某些复杂的展示页...

aweiloveandroid
2017/07/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
27
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部