基于Volley和DiskLruCache的缓存策略

基于Volley和DiskLruCache的缓存策略

ID:42629447

大小:348.50 KB

页数:7页

时间:2019-09-19

基于Volley和DiskLruCache的缓存策略_第1页
基于Volley和DiskLruCache的缓存策略_第2页
基于Volley和DiskLruCache的缓存策略_第3页
基于Volley和DiskLruCache的缓存策略_第4页
基于Volley和DiskLruCache的缓存策略_第5页
资源描述:

《基于Volley和DiskLruCache的缓存策略》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于Volley和DiskLruCache的缓存策略在我们开发应用过程中,不可避免的使用网络图片,那么图片请求和缓存就成了一个问题,本着为用户节省流量的角度,我们的应用就应该是已经下载的图片不会重复下载,以及下载过的图片没有网络也能查看的效果,这里就涉及到了网络请求、内存缓存和磁盘缓存。简单的介绍一下今天的两位主角:DiskLruCache :是基于Lru磁盘缓存的Java实现。Volley :Google推出的Android异步网络请求框架和图片加载框架(自备梯子)。细心的小伙伴应该发现咋是两个主角呢,说好的内存缓存呢?其实在Volley中已经默认实现内存缓存了,我们简单的介

2、绍下Volley的接口及关键函数(以下为引用)。ImageLoaderImageLoader类需要一个请求的实例以及一个ImageCache类的实现。图片通过传递一个URL和一个ImageListener实例到get()方法进行加载。从那里,ImageLoader检查ImageCache,如果图像不是在缓存中,就从网络中加载图片。NetworkImageView这个类代替布局中的ImageViews类,而且需要使用ImageLoader类。NetworkImageView类的setUrl()方法需要一个URL路径字符串和一个ImageLoader实例。然后使用ImageLode

3、r的get()方法来获取图片数据。ImageCacheVolley库的ImageCache接口允许你使用你喜好的L1缓存实现。

4、ImageCache接口有两个方法,getBitmap(Stringurl)和putBitmap(Stringurl,Bitmapbitmap)。这些桩是非常简单的,它们可以添加到任何缓存实现里。有两种可用的缓存实现。推荐的方法是在内存中使用一个基础的LRU缓存。对于硬盘的缓存实现,我选择使用JackWharton编写的DiskLruCache。我选择这个实现是因为它在Android社区中被频繁的使用。使用一个基于磁盘的L1缓存可能导致阻塞I/O问题。Volley已经有一个隐式的硬盘L2缓存。硬盘L1缓存已经被包含在内了。原生项目的介绍如下以下是这个实现的主要组件:Reques

5、tManagerRequestManager维护我们的RequestQueue的一个引用。Volley使用ResuestQueue来处理我们对Twitter数据和图片加载的请求。GsonRequestGsonRequest与图片加载没有直接联系,但它代表了如何扩展Volley请求类来处理JSON解析。该类用于对Twitter的GET请求和TwitterData对象的结果。BitmapLruImageCache该类是一个基本的“最近最少使用(LRU)”内存缓存实现。它速度快但不会阻塞I/O。这是推荐的方法。DiskLruImageCacheDiskLruImageCache是一个

6、位图版本的DiskLruCache封装。它从DiskLruCache中增加并检索位图,还处理缓存的实例化。硬盘缓存可能会造成I/O阻塞。ImageCacheManagerImageCacheManager持有ImageCache和VolleyImageLoader引用。在ImageCacheManager中,你可能注意到一点就是我们使用URL字符串的hashCode()作为缓存的键值。这是由于URL中的某些字符不能作为缓存的键值。BuzzArrayAdapter该适配器比较简单的。这里只需要注意一点,我们要实现Volley的Listener和ErrorListener接口,并且

7、把该适配器作为Listener参数传递给了NetworkImageView的setUrl(Stringstring,Listenerlistener,ErrorListenererrorListener)方法。这个适配器包含了一些额外代码用于滚动时加载旧的tweets。以上就是原博的内容,我们的改造是基于这个项目来进行的。首先来介绍下具体的思路,如图:简单介绍一下思路:加载图片使用的是NetworkImageView的setImageUrl()方法,参数是图片的下载地址URL和ImageLo

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。