应用层的知识归纳

Android图片三级缓存技术

2018-10-29  本文已影响41人  WangSins
图片的三级缓存
  1. 内存缓存,缓存的是Bitmap对象,用Map<String,Bitmap>结构缓存,key是url
  2. 本地(sd卡)缓存,缓存的是图片文件,storage/sdcard/Android/data/pakageName/files/图片文件名(xxx.jpg)
  3. 远程服务器缓存,缓存的是图片文件,远程服务器应用中
如何使用三级缓存?
  1. 根据url从一级缓存中去对应Bitmap对象
    如果有:显示结束(结束)
    如果没有:进入2
  2. 从二级缓存中查找:得到文件名并在SD卡缓存目录下加载图片文件得到Birmap对象
    如果有:显示,缓存到一级缓存中(结束)
    如果没有:进入3
  3. 显示代表提示正在加载的图片,启动分线程联网请求得到Bitmap对象
    如果有:显示,缓存到一级缓存,缓存到二级缓存
    如果没有:显示提示错误图片(结束)
在ListView中使用图片三级缓存会存在图片闪动bug
  1. 每次getView()都将图片的url保存到ImageView上:imageView.setTag(imagPath)
  2. 在分线程准备请求加载图片之前,比较准备加载图片的url与ImageView中保存的最新图片的url是同一个,
    如果不是同一个,当前加载图片任务不再执行
    如果相同,继续执行加载远程图片
  3. 在主线程准备显示图片之前,比较加载到图片的url与ImageView中保存的最新图片url时同一个,
    如果不是同一个,不需要显示此图片
    如果相同 ,显示图片
上一篇下一篇

猜你喜欢

热点阅读