ImageLoader加载图片问题:
UIL图片加载已经非常熟悉,已经知道的是采用的是两级缓存: 内存中和磁盘上
如果都没有则从网络下载.
缓存的依据: UIL根据图片的URI获取缓存在磁盘文件的MD5值,看起来一切都顺利成章.
然而,问题出现了:
当网络上同一路径下的图片换了内容而没有换名字的话就会出现问题了: 不管内容怎么换,还是加载之前的图片
从缓存的依据可以知道: 由于图片根据MD5已经在本地缓存,尽管换了内容,但是图片的路径没有变,自然MD5值亦不会变,
结果会被认为是同一样图片,进而从缓存中取图片而不是重新加载
同样的问题出现在对与本地图片的加载中:
loadImage(String uri,ImageWare imageware) 这个方法传入的参数为uri,一般情况下我们都是使用这个
方法来加载网络图片,然而他还可以加载本地的图片uri格式为: drawable://R.drawable.ic_launcher
实际上这个地方也会和网络加载一样出现同样的问题:
1. R.drawable的实际值是一个16进制的int值,这个值不是一成不变的,存在与R文件中,自动生成
2.当在res文件中添加新的元素时,对应的id就会有变化,如果之前做了缓存,那么这个时候可能会出错