- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.定义各个频道的内容数据,用文件来存储.根据需求考虑用同一个文件来放所有频道的数据还是每个频道一个文件,根据文件名来区分各个频道的文件.这次麦洛在项目中就用了多个文件的方式,而网易的实现有可能也多个文件,而且支持断点续传.比如说,网易新闻频道A与频道B,都有列表以及列表项中对应的新闻详细内容.这时可能是两个文件:一个文件存放所有列表数据,另外一个文件存放新闻详细数据.对于图片可以使用打包的方式传到客户端,客户端只要将此包解压到本地缓存目录就可以,当然如果你的图片下载器支持sdcard图片缓存的话,那么就完全可以不用修改代码了.
2.定义每个文件的内容格式.例如在新闻详细内容这个文件里面有多条详细内容;而每条详细内容需要一些头信息,这些头信息包含了该条新闻的id以及这条详细新闻的内容的长度length,加个头信息的作用是方便检索新闻内容.
3.添加定义请求离线下载文件的接口.并且准备好以上的那些文件
4.使用Service来下载文件.比如在wifi情况下,就可以启动service进行下载.而且这个service的可以在比如每隔1个小时,wifi情况下自动下载最新的内容,保证离线的内容是尽量最新的.
5.根据第2步定义的文件格式,写一个文件解析器.Webview离线功能(优先cache缓存+cache缓存管理)
[复制链接]
樱蝴蝶 当前离线
在线时间
43 小时
e望
0 点
最后登录
2012-12-20
注册时间
2012-9-7
积分
866
阅读权限
40
UID
736869
电梯直达
楼主
发表于 3 天前 |只看该作者 |倒序浏览
0
本帖最后由 樱蝴蝶 于 2012-12-17 14:28 编辑 转自: /blog/1280946在做Webview显示服务器的html功能时 需要加入离线功能。/开始思路很狭隘,以为一定应该是从服务器得到的html文件,下载到本地后加载~但是这样不能离线查看图片,因为图片数据并不再html中,只是连接地址。后来,经过上网各种搜寻学习,发现原来Webview有自己的缓存,如图:在手机本地 data/data/包名/cache/webviewCache 中放的是Webview显示过的图片。我们可以把它导出,后缀改成对应图片的格式 打开看看~而databases中的webviewCache.db 中放的就是图片地址和图片名字对应等信息 的表~ 导出后也可用SQLite Database Browser 等工具查看
3 天前 上传
下载附件 (10.56 KB)
1.优先缓存 好了,这里你是不是想问:既然这些图片已经存在手机缓存里面了,为什么Webview不能再把它显示出来呢?这里我们需要设置下:WebSettings webSettings= webView.getSettings();webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 默认不使用缓存!LOAD_CACHE_ELSE_NETWORK的意思是:Use cache if content is there, even if expired (eg, history nav) If it is not in the cache, load from network. Use withsetCacheMode(int).如果内容已经存在cache 则使用cache,即使是过去的历史记录。如果cache中不存在,从网络中获取!所以加上这句,不仅可以使用cache离线显示用户浏览过的内容,还可以在有网络的情况下优先调用缓存,为用户减少流量!~我有些费解的是,这个设置在我看来是很有利于用户体验的 为什么google不把它设置成默认的呢? 还需要开发者手动打开。猜想可能是因为相同页面可能会更新的原因!如果离线加载出现乱码 可参考: /blog/1280656/2.缓存管理:(1)clearCacheFolder(Activity.getCacheDir(), System.currentTimeMillis());//删除此时之前的缓存.Java代码
// clear the cache before time numDays
private int clearCacheFolder(File dir, long numDays) {
int deletedFiles = 0;
if (dir!= null dir.
文档评论(0)