一、什么是三级缓存?
- 一级: 内存中的缓存图片对象(Bitmap), 用Map<url, Bitmap>
- 二级: 手机sd卡的files或手机内部的files中缓存图片文件(xxx.jpg/png)
- 三级: 服务器端保存图片文件
二、如何使用三级缓存?
如何根据url根据图片显示?
- 根据url从一级缓存中取出对应的Bitmap对象,
- . 如果有, 直接显示
- . 如果没有进入进入步骤2
- 根据url从二级缓存中得到Bitmap对象(从url中取出文件名到files文件夹下加载图片文件),
- . 如果有, 直接显示, 并保存到一级缓存
- . 如果没有进入③
- 根据Url请求服务(三缓存)获取Bitmap对象, 需要启动分线程请求, 显示代表正在加载的图片
- . 如果有
显示图片
保存到一级缓存
保存二缓存
- . 如果没有:
显示代表错误的图片
三、在ListView中使用图片三级缓存的问题?
- 问题: 快速滑动时item中图片有闪动(显示错误图片)
- 原因: connvertView被复用了
- 解决: 检查视图是否已经被复用, 如果复用了不加载图片/不显示图片
- 如何检查? <