Volley 核心源码解析(四)

作者: 秋兰兮青青 | 来源:发表于2017-05-08 14:31 被阅读23次

    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 cache;

    public BitmapLruCache() {

    cache = new LruCache(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 核心源码解析(四)

        本文链接:https://www.haomeiwen.com/subject/lpimtxtx.html