安卓Webview缓存网页数据(无网络正常显示)
一、需求经历
最近的项目是一个原生 +webview 显示的 APP,一开始的时候,网站那边要求我们安卓给他做缓存。后来由于某些因素,这个需求取消了。
由于需求取消,我也没想过怎么去做这个缓存,由于使用 webview 比较少,最这个不是很熟悉。
二、使用场景结合
后来碰巧又和同事 A 聊到了这个话题,原生 APP 和 webview 加载有什么不一样,同事 A 说一打开 APP 的时候,webview 需要去加载,若没有网络的话,就没东西显示,影响用户体验,而原生 APP,就算没有网络,也可以显示内容。
说到这里,我认真思考一番,我们做个缓存,不就得了?由于之前接触过 HTML5 的开发,印象中是有这个一个机制去把这个事情实现。
三、实现
对于 H5 的应用有一个 应用程序缓存(Application Cache) 。
这个实现起来非常轻松。
只要在网站的目录下配置一个扩展名为:.appcache 的 Manifest 文件,注明哪些文件需缓存,哪些文件必须经过网络去加载,然后在<html> 标签中加入 <html manifest="demo.appcache"> 即可完成缓存的实现。
这个时候,我们用 webview 去加载这个网站,断网,再打开 APP,网页一样可以显示出来,里面的 js 功能还可以用的哦(这是废话啦)。
参考:
http://www.w3school.com.cn/html5/html_5_app_cache.asp
推荐:
Android应用内存泄露分析、改善经验总结
安卓Webview缓存网页数据(无网络正常显示)的更多相关文章
- Android WebView 实现缓存网页数据
WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源),H5缓存(即AppCache). 将我们浏览过的网页url已经网页文件(css.图片.js等)保存到数据库表中 缓存模式(5种) ...
- 安卓 WebView加载本地图片时居中显示
在一个项目中使用WebView显示gif图片(自定义的View无法放大gif),当图片过小时只在左侧显示,经过研究发现无论设置android:layout_gravity="center_h ...
- 安卓APP承载网页(WebView)
安卓APP自身如何打开网页,如何制作一个简单的浏览器,WebView在其中将是一个重要的角色.WebView是一个基于WebKit引擎.展现Web页面的控件. Webview 是一个基于webkit引 ...
- Android开发:通过 webview 将网页打包成安卓应用
商业转载请联系作者获得授权,非商业转载请注明出处. For commercial use, please contact the author for authorization. For non-c ...
- WebApp:如何让安卓的webview缓存webapp的html、js和图片等资源
一.开发环境 客户端:安卓+webview(vuejs) 服务器端:tomcat 8.0 二.问题 使用安卓原生+web(基于webpack+vuejs)的方式开发了一个安卓应 ...
- Asp.net 使用正则和网络编程抓取网页数据(有用)
Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...
- 【android】WebView缓存数据收集
Android WebView 缓存 Android高手进阶教程(二十四)之---Android WebView的缓存!!! Android webView 缓存 Cache + HTML5离线功能 ...
- H5 和移动端 WebView 缓存机制解析与实战
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/qHm_dJBhVbv0pJs8Crp77w 作者:叶 ...
- Android WebView 缓存机制和模式详解
当我们加载Html时候,会在我们data/应用package下生成database与cache两个文件夹: 我们请求的Url记录是保存在webviewCache.db里,而url的内容是保存在webv ...
随机推荐
- Selenium中自动输入10位随机数字的方法
有时候项目中需要输入快递号,对于已输入过的快递单号则不能再次输入,这种问题怎么解决呢,可以看下这个方法 public static final String ALLCHAR = "01234 ...
- STW 团队项目分析
序言 经过我们团队的详细讨论,最终确定我们的项目立意,它包含这我们每个人的观点,我相信我们可以做的很好,Believe......................................... ...
- Wordpress 通过 post id 获取文章 url
global $post; echo get_permalink($post->ID); 函数详解: Codex - get_permalink() 注意:有些链接是通过 SEO 重定向的,比如 ...
- CentOS7 haproxy+keepalived实现高可用集群搭建
一.搭建环境 CentOS7 64位 Keepalived 1.3.5 Haproxy 1.5.18 后端负载主机:192.168.166.21 192.168.166.22 两台节点上安装rabbi ...
- Linux下librtmp使用及编程实战
最近想做rtmp的推流.直播的小项目,不想直接使用FFmpeg进行推流,FFmpeg进行推流特别简单,因为它已经将编码以及librtmp都集成好了,没啥意思.FFmpeg推流的例子,在雷神的博客里可以 ...
- ssh-add Could not open a connection to your authentication agent.
ssh-add 报错Could not open a connection to your authentication agent. 需要执行以下代码 eval `ssh-agent -s` ssh ...
- get_class 方法
get_class 返回对象的类名 get_class (PHP 4, PHP 5) get_class — 返回对象的类名 说明 string get_class ([ object $obj ] ...
- CH Round #59 - OrzCC杯NOIP模拟赛day1
第一题:队爷的新书 题意简述:给定n个闭区间,求出一个数p使它与包含它的区间数的积最大,输出这个积. 分析:使用一个差分数组g,每个区间[l,r],l位置加1,r+1的位置减1,从前往后统计,得到对于 ...
- java.net.BindException: Permission denied
端口号报错: 解决办法:把端口号改为1000以上的,比如8080
- mapserv和mapserv.exe的区别
哎,困扰了我这么久才知道一个是在unix环境下的,一个是在windows环境下的