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的核心组件包括RequestQueue、Network、Cache和ResponseDelivery。RequestQueue是...
在压缩包中的"Volley.jar"是Volley库的编译结果,可以直接导入到Android项目中使用,无需解析源码。使用jar包时,开发者可以直接调用Volley提供的API,如`RequestQueue.add(Request)`来添加请求,或者使用`...
首先,Volley的核心特点包括: 1. **缓存机制**:Volley提供了内存和磁盘缓存策略,能够快速响应网络请求,减少对服务器的依赖,提高用户体验。 2. **线程管理**:Volley内部使用了线程池来处理网络请求,确保在...
5. **强大的转换能力**:Volley支持多种数据格式,如JSON、XML等,可以自动解析响应数据,无需额外的解析步骤。 6. **错误处理**:Volley提供了统一的错误处理机制,方便开发者捕获和处理网络请求过程中可能出现的...
在深入了解Volley的源码之前,我们先来概述一下Volley的基本概念和核心功能。 Volley的主要目标是简化Android应用中的网络请求处理,提供了一套高效的网络请求管理机制,包括异步处理、缓存策略、错误处理和性能...
Volley的核心设计理念是优化UI线程的性能,减少网络延迟对用户界面的影响,以及通过缓存机制提高用户体验。下面我们将深入探讨Volley的源码,了解其工作原理和主要功能。 1. **网络请求模块**: - `Request`类是...
Volley的核心特性包括: 1. **缓存策略**: - Volley提供了基于内存和磁盘的两级缓存机制,能够快速响应网络请求,减少对服务器的压力。内存缓存用于存储最近访问的数据,磁盘缓存则用于长期存储,即使应用关闭也...
Volley 的核心优势在于其对网络请求的优化、内存管理以及线程调度策略。 1. **RequestQueue**:这是 Volley 的主要入口点,负责管理多个 CacheDispatcher 和 NetworkDispatcher 线程,处理请求队列。RequestQueue ...
在Volley的源码中,可以看到许多关键类的设计,如Request类用于封装网络请求信息,ResponseListener接口用于处理响应数据,Parser类用于解析数据等。此外,Volley还提供了强大的错误处理机制,使得开发者可以方便地...
Volley的核心理念是优化内存使用,减少网络请求的延迟,以及通过缓存机制提高用户体验。这个名为"可查看Volley源码"的压缩包文件,很显然是为了帮助开发者深入理解Volley的工作原理,从而更好地利用它进行应用开发。...
Volley是Google推出的一款高效的网络请求库,专为Android平台设计。...通过深入理解Volley的源码,开发者可以更好地利用其特性,提升应用的网络性能。提供的文档将帮助你理解和应用这些知识点,解决实际开发中的问题。
- **数据解析**:Volley内置了对JSON和String的解析支持,简化了数据处理流程。 - **错误处理**:Volley提供了统一的错误处理机制,方便开发者捕获和处理网络异常。 **2. Volley的使用步骤** - **添加依赖**:...
- 数据解析:Volley支持多种数据格式,如JSON、XML,可以直接转换为Java对象。 - 取消请求:可以轻松取消不再需要的请求,避免资源浪费。 2. OkHttp是Square公司开发的一个高效的HTTP客户端,其设计理念是减少...
Volley框架的源码分析可以帮助开发者深入理解其工作原理,从而更好地优化网络请求性能,例如调整缓存策略、定制网络栈或实现自定义的解析器。通过对源码的学习,开发者还可以解决Volley在特定场景下可能遇到的问题,...
Volley默认有四个工作线程池:一个用于执行网络请求,两个用于处理缓存,一个用于执行回调到主线程的任务,确保UI更新在正确的线程中执行。 Volley还提供了一些其他特性,如取消请求、错误处理、自动重试策略等。...