验证Glide图片异步缓存,再次打开程序优先从内存/磁盘中加载图片

来源:互联网 发布:顺丰速运成本数据分析 编辑:程序博客网 时间:2024/05/16 17:02

关于图片的缓存,有多种实现方式:

自己编写实现:

  • AsyncTask+LruCache+SD卡缓存
    AsyncTask他内部是维护了一个handler和线程池的。

  • ExecutorService +LruCache+SD卡
    ExecutorService 线程池,可以自己指定需要几个线程任务。

  • Thread+lruCache+sd卡
    这种方式不建议用,Thread去下载图片,每次下载图片都要new Thread去下载,而且还是并发去下载,每次都new 一个线程浪费内存。不知道你家的服务器受得了吗!

第三方开源库(就不多说介绍了)


之所以写本文,是自己突然想去验证下。
大家肯定知道有很多开源库,本文主要是验证:验证Glide图片异步缓存,再次打开程序优先从内存/磁盘中加载图片

准备工作

  • 准备一个URL数组(真实环境可定需要请求网络拿到的,这里这样做只是为了验证:看清楚本文的标题哦)
 public final static String[] imageThumbUrls = new String[] {            "http://img.mukewang.com/55237dcc0001128c06000338.jpg",            "http://img.mukewang.com/55249cf30001ae8a06000338.jpg",            "http://img.mukewang.com/5523711700016d1606000338.jpg",            "http://img.mukewang.com/551e470500018dd806000338.jpg",            "http://img.mukewang.com/551de0570001134f06000338.jpg",            "http://img.mukewang.com/552640c300018a9606000338.jpg",            "http://img.mukewang.com/551b92340001c9f206000338.jpg",            "http://img.mukewang.com/5518c3d7000175af06000338.jpg",            "http://img.mukewang.com/551b98ae0001e57906000338.jpg",            "http://img.mukewang.com/550b86560001009406000338.jpg",            "http://img.mukewang.com/551916790001125706000338.jpg",            "http://img.mukewang.com/5518ecf20001cb4e06000338.jpg",            "http://img.mukewang.com/551380400001da9b06000338.jpg",            "http://img.mukewang.com/550a33b00001738a06000338.jpg",            "http://img.mukewang.com/5513a1b50001752806000338.jpg",            "http://img.mukewang.com/5513e20600017c1806000338.jpg",            "http://img.mukewang.com/5518ecf20001cb4e06000338.jpg",            "http://img.mukewang.com/551916790001125706000338.jpg",            "http://img.mukewang.com/550a87da000168db06000338.jpg",            "http://img.mukewang.com/530f0ef700019b5906000338.jpg",            "http://img.mukewang.com/549bda090001c53e06000338.jpg",            "http://img.mukewang.com/547d5a45000156f406000338.jpg",            "http://img.mukewang.com/54780ea90001f3b406000338.jpg",            "http://img.mukewang.com/547ed1c9000150cc06000338.jpg",            "http://img.mukewang.com/54214727000160e306000338.jpg",            "http://img.mukewang.com/54c87c73000150cf06000338.jpg",            "http://img.mukewang.com/548165820001b4b006000338.jpg",            "https://lh4.googleusercontent.com/-e9NHZ5k5MSs/URqvMIBZjtI/AAAAAAAAAbs/1fV810rDNfQ/s160-c/Yosemite%252520Tree.jpg", };
  • Glide实现加载图片,并作内存缓存+硬盘缓存
  ImageView image = holder.image;  GlideUtils.glides(ctx,imageThumbUrls[position],image);
public class GlideUtils {      public static  void glides(Activity activity, String url, ImageView imageView){          Glide.with(activity)                  .load(url)                  .skipMemoryCache(false)                  .diskCacheStrategy(DiskCacheStrategy.SOURCE)                  .into(imageView);      }}

验证具体流程

  • 验证方式:写一个url数组,在手机有网络的情况下运行程序,然后查看data/data/+自己包名(默认在这里,手机root才能看,模拟器是root的)下时候有缓存数据,然后把把网断掉,在运行程序,图片正常显示,验证成功、

  • 再次验证,清空数据,先把网断掉,运行程序加载不出来,打开网络运行,图片加载出来,查看data目录有数据,再次断开网络,运行图片正常加载。

  • 结果证明:glide缓存图片,再次打开程序,是优先加载缓存的图片的。(glide内部已处理好)

  • 缓存的还是图片,只是后缀名变了。仍然可以用图片查看器查看

最后把缓存的数据压缩一下导出来,看看是否能打开!

  • 把缓存图片的目录压缩一下

这里写图片描述

  • 导出来解压

这里写图片描述

  • 最后选择一个用画图工具打开:

这里写图片描述

最后结果证明本文标题!

0 0
原创粉丝点击