图片缓存,三级缓存

什么是三级缓存

内存缓存:先从内存优先加载,速度最快。
本地缓存:再从本地加载,速度快。
网络加载:最后从网络加载,速度慢,费流量。

在OkHttp中,可以设置Http缓存:

1
2
3
4
5
6
7
8
9
10
private static OkHttpClient mOkHttpClient;
Cache cache = new Cache(new File(MindApp.getContext().getCacheDir(), "HttpCache"), 1024 * 1024 * 100);
mOkHttpClient = new OkHttpClient.Builder()
.cache(cache)
.addInterceptor(interceptor)
.retryOnConnectionFailure(true)
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(20, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.build();

自定义一个ImageLoader

一个ImageLoader基本上需要包含以下功能:

  • 图片同步加载
  • 图片异步加载
  • 图片压缩
  • 内存缓存
  • 磁盘缓存
  • 网络拉取

代码参考:ImageLoader完整代码