`
f303153041
  • 浏览: 44869 次
社区版块
存档分类
最新评论

Volley 核心源码解析(四)

 
阅读更多
Volley 的缓存


1.磁盘缓存
在Volley类 调用 newRequestQueue方法的时候 ,创建了一个file

File cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);

明显 这是做了磁盘缓存

RequestQueue queue;
        if (maxDiskCacheBytes <= -1)
        {
        // No maximum size specified
        queue = new RequestQueue(new DiskBasedCache(cacheDir), network);
        }
        else
        {
        // Disk cache size specified
        queue = new RequestQueue(new DiskBasedCache(cacheDir, maxDiskCacheBytes), network);
        }

        queue.start();

这里的意思是:没有设置缓存大小的时候,使用默认的缓存大小,反之使用自定义的大小

看看 DiskBasedCache类中的静态变量:

/** Default maximum disk usage in bytes. */
    private static final int DEFAULT_DISK_USAGE_BYTES = 5 * 1024 * 1024;

构造方法;
   public DiskBasedCache(File rootDirectory) {
        this(rootDirectory, DEFAULT_DISK_USAGE_BYTES);
    }

这就对磁盘缓存做了一个5M大小的初始化。
具体的DiskBasedCache怎么缓存的 这里就不深究了,有兴趣的可以自己去了解,无非就是把内容存到SD卡中。

2.内存缓存 MemoryChache

在Volley 中 我知道的使用内存缓存的地方 是在图片加载的时候,Volley 中定义一个 叫做
ImageCache 的接口,

public interface ImageCache {
        public Bitmap getBitmap(String url);
        public void putBitmap(String url, Bitmap bitmap);
    }

这个接口中定义了 两个方法,取和存。

在我们自己实现ImageCache的时候 可以用到 LruCache,也可以用 DiskChche
但是加载图片 优先用LruCache更快 其次才是  DiskChche;

这里给出一个简单的 实现:


public class BitmapLruCache implements ImageCache {

    private LruCache<String, Bitmap> cache;

    public BitmapLruCache() {
        cache = new LruCache<String, Bitmap>(8 * 1024 * 1024) {
            @Override
            protected int sizeOf(String key, Bitmap bitmap) {
                return bitmap.getRowBytes() * bitmap.getHeight();
            }
        };
    }

    @Override
    public Bitmap getBitmap(String url) {
        return cache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        cache.put(url, bitmap);
    }
}

现在有很多优秀的图片加载库 如  Facebook 的Fresco,ImageLoader 等.

当然 Volley的也很好用。

3.网络请求的缓存

在前面章节中已经结束到了,这里就不再细谈。

分享到:
评论

相关推荐

    Volley源码解析

    Volley源码解析,个人的理解与注释

    volley源码和jar包

    这是volley的源码以及jar包,用于小数据量的频繁的网络请求。

    Volley框架源码

    关于Volley框架的源码,及一些关于开发的一些例子讲解

    android-volley源码

    android-volley源码代码 android Volley ---------- This is an unofficial mirror for [android volley library](https://android.googlesource.com/platform/frameworks/volley), the source code will ...

    volley源码

    volley源码,有兴趣的同学可以下载研究一下。 谷歌建议使用volley框架进行网络请求。

    volley联网解析网络上的xml文件

    采用volley的联网方式,实现解析服务端返回的xml数据

    Volley源码+包

    Volley源码+包:在开发android使用第三方框架有两种方法:一是直接加框架的源码,二是在libs中加jar包。

    google官方最新volley源码

    google官方最新volley源码,如果你想对volley有更深的认识就下来学习吧

    Volley源码与jar包

    Volley是2013年Google I/O上发布的,它是Android平台上的网络通信库,对常用的网络通信功能作了封装,能使网络通信更快, 更简单,更健壮。以前使用网络通信一般都是用AsyncTaskLoader、HttpURLConnection、...

    android volley源码

    android volley源码,从google下载的volley源码,方便理解和使用

    Github-volley jar包和源码

    volley是一个优秀的安卓开源网络访问工具 这里包含一个volley代码jar和源码,版本是2015.03.03的1.0.11版本 更多资料可以参见volley的github地址: https://github.com/mcxiaoke/android-volley

    Volley源码

    Volley源码,相关博文:http://www.cnblogs.com/tianzhijiexian/p/4255488.html

    Android Volley源码20160414版

    Android Volley源代码,更新日期20160414

    可查看Volley源码

    volley作为库文件 这个demo ,可以查看volley源码

    volley的demo(包括volley源码)

    一共两个demo: 1.使用volley.jar进行开发的demo 2.将volley源码添加到工程中,进行演示的demo。最重要的是在源码中添加了很多中文注释。

    volley框架源码实例

    volley框架的实例源码,包含二次封装,可下载导入工程项目运行

    Volley源码及文档

    Volley源码和文档,本人验证无误,遂上传,希望对你有帮助~

    Volley.jar及源码

    1.0.19版本的Volley.jar和Volley源码。截止于2015.09.08。更多详情见github:https://github.com/mcxiaoke/android-volley

Global site tag (gtag.js) - Google Analytics