三方网络框架的缓存策略

来源:互联网 发布:赚钱最快软件 编辑:程序博客网 时间:2024/05/29 11:14
Android中网络框架和图片加载框架的选择(参考了“这么多开源框架,该用哪个好”:http://www.jianshu.com/p/f3227c7008d4)
本文不会在每个三方框架的基础上展开每个框架的详细使用方法,而是根据最近我遇到的问题从问题的角度出发总结
比如网络框架的选择,我因为缓存的问题研究各个框架的优缺点,从而下面从缓存的角度来比较各个框架的异同:
一,比较市面上几种三方网络框架的缓存策略
1概述
1.1在项目中用到缓存目的:
1.1.1.为了有网的时候提供更好更快的用户体验;
1.1.2.在没有网的时候保证app仍然能用;
1.2缓存分类:
1.2.1 sqlite,file,内存缓存等。
1.2.2 当然又可以分为自己进行的缓存和网络框架自带的缓存(这里根据需求来分的);小说等就要加载到本地来看用sqlite加file多。
我们做的广播类的也是这种情况,再比如音乐播放器也是这种情况(其实两者属于一类);
普通的应用大多只是为了提高加载的速度,提高应用的用户体验,比如:qq空间和微信的朋友圈,微信。这里我感觉使用的封装在网络加载工具中和
图片,视频加载工具中的缓存(磁盘+内存)。
2.几种三方网络记载工具的比较
2.1.Retrofit没有缓存,但是可以通过Retrofit+OkHttp实现(OkHttp是有缓存策略的,
参见http://blog.csdn.net/jabony/article/details/52814022)
Retrofit+OkHttp的缓存机制:
在响应请求之后在 data/data/<包名>/cache 下建立一个response 文件夹,保持缓存数据。
这样我们就可以在请求的时候,如果判断到没有网络,自动读取缓存的数据。
同样这也可以实现,在我们没有网络的情况下,重新打开App可以浏览的之前显示过的内容。
也就是:判断网络,有网络,则从网络获取,并保存到缓存中,无网络,则从缓存中获取。
同时上面的缓存策略也是目前最流行的比如qq和微信的朋友圈都是(在我们没有网络的情况下,重新打开App可以浏览的之前显示过的内容)
2.2.xutils中可以设置缓存参见(http://blog.csdn.net/smartbetter/article/details/51866792)
2.3.Volley中可以缓存图片也可以缓存json数据,但是平时很少使用她来来做图片的加载因为其不适合大文件的下载和上传,原因:
volley里网络通信时android2.3以上用的HttpUrlConnection,2.3以下用的HttpClient,
HttpUrlConnection默认传输数据是将数据全部写到内存中再发送到服务端,Volley就是采用默认的方式,
这样在上传大文件时很容易就oom;有一种解决办法是设置每次传输流的大小,想要改造volley使其支持大文件上传下载参考比较不错的文章
http://blog.csdn.net/s569646547/article/details/48346969;
还有其内部在数据为json数据时候默认将缓存功能去掉,其实默认启动了缓存策略但是缓存的时间默认为0所以还是没有缓存
,想要缓存json数据需要我们自己来实现也就是要去修改volley的源码或者自己多封装一层在其基础上;
参见:http://blog.csdn.net/linmiansheng/article/details/23023573)
volley介绍的很好的文章:http://blog.csdn.net/jxxfzgy/article/details/44088299
2.4.自己对okhttp的封装(参照了鸿神的),OkHttp是有缓存策略的,所以自己可以封装okhttp来达到使用的目的
1 0
原创粉丝点击