由于pc端实现网络下载图片直接下载到本地就可以显示而移动设备不管是Android还是ios设备都是通过流量去网络下载图片,它是按流量是收费的,因此我们在开发中就应该考虑到流量的消耗问题,第一次先去缓存中去读取数据
,如果有直接显示,缓存没有再去手机存储设备读取,存储设备没有再去网络下载,这样就节省了用户的流量。
为了提高用户体验,因此需要在缓存中再备份一份。
缓存采用LRU模式 它的核心思想当缓存满的时候,会优先淘汰那些近期使用的缓存对象
采用LRU两种缓存 LruCache 和 DiskLruCache 第一种是显示内存缓存
第二种是存储设备缓存
通过这两者的完美结合是ImageLoader
LruCache从Android 3.1提供的一个缓存类 通过v4包兼容包可以兼容到早期的版本,目前Android2.2以下的用户很少了,因此只要兼容到Android2.2就行了。主要分为三种
强引用
弱引用
软引用
public class lruCache<K,V>
private final LinkedHashMap<K,V> map;
}
int maxMemory=(int)(Runtime.getRuntime().maxMemory()/1024);
int cacheSiez=maxMemory/8;
mMemoryCache=new LruCache<String key,Bitmap bitmap>(cacheSize){
@Override
protected int sizeOf(String key,Bitmap bitmap){
return bitmap.getRowBytes()*bitmap.getHeight()/1024;
}
};
mMemoryCache.get(key)
添加一个缓存对象
mMemoryCache.put(key,bitmap)
downloadUrlToStream(String urlString,OutputStream os)
DiskLruCache 并不能通过构造方法来创建,他提供了open方法用于创建自身。
public statci DiskLruCache open(File directory,int appVersion,int valueCount,long maxSize){
}