Glide库的使用

在学习Glide 的过程中,有些值得注意的地方,在此记录一下

1. 在使用Glide加载网络图片时,注意加上网络权限:

<uses-permission android:name="android.permission.INTERNET"/>

2. 从Android9开始,默认禁止明文传输;  若请求http,注意在Manifest中配置上允许明文传输   

android:usesCleartextTraffic="true"
还有另外一种方法,就是在 Res目录下新建xml文件夹,并在内部新建一个xml的配置文件,文件名自定义
1 <?xml version="1.0" encoding="utf-8"?>
2 <network-security-config>
3     <base-config cleartextTrafficPermitted="true" />
4 </network-security-config>

之后在Manifest中配置上安全配置
android:networkSecurityConfig="@xml/netsecurity"

3. ** 如果上述二项配置好以后,仍不能加载图片,请一定要卸载APP,再重新安装 **

======================================================================

基于上述原因和对Glide的使用需求,在这次随笔中,记录下Glide的相关使用规则

原文: https://blog.csdn.net/yulyu/article/details/55096713

1. Glide的缓存资源    

  • 1.原图(SOURCE) :原始图片
  • 2.处理图(RESULT) :经过压缩和变形等处理后的图片

2. Glide的缓存策略

     a. 内存缓存策略 :    skipMemoryCache( Boolean )   

         Glide默认在内存中缓存处理图(Result);通过 skipMemoryCache 来设置是否要跳过内存缓存 

         True: 跳过内存缓存;不在内存中缓存结果图;

         False:不跳过内存缓存;

         调用skipMemoryCache(false)没有代码上的意义,因为Glide默认就是不跳过内存缓存的,

         但是显示调用这个方法,可以让别人一目了然的知道你这次请求是会在内存中缓存的,所以还是建议显示调用一下这个方法来表明你的内存缓存策略

     b.磁盘缓存策略(diskCacheStrategy)

       Glide磁盘缓存策略分为四种,默认的是RESULT(默认值这一点网上很多文章都写错了,但是这一点很重要):

           1.ALL:缓存原图(SOURCE)和处理图(RESULT)

           2.NONE:什么都不缓存

           3.SOURCE:只缓存原图(SOURCE)

           4.RESULT:只缓存处理图(RESULT) —默认值

     c. 组合策略

         和其它的三缓缓存一样,Glide的缓存读取顺序是: 内存-->磁盘-->网络

         需要注意的是Glide的内存缓存和磁盘缓存的配置相互没有直接影响,所以可以同时进行配置

         就是内存缓存与磁盘缓存相互间没啥关系,各玩各的

3.缓存大小及路径
   3.1内存缓存最大空间
        Glide的内存缓存其实涉及到比较多的计算,这里就介绍最重要的一个参数,就是内存缓存最大空间

        内存缓存最大空间(maxSize)=每个进程可用的最大内存 * 0.4

        (低配手机的话是: 每个进程可用的最大内存 * 0.33)

   3.2磁盘缓存大小
        磁盘缓存大小: 250 * 1024 * 1024(250MB)

        /** 250 MB of cache. */

         int DEFAULT_DISK_CACHE_SIZE = 250 * 1024 * 1024;

   3.3磁盘缓存目录

        磁盘缓存目录: 项目/cache/image_manager_disk_cache

        String DEFAULT_DISK_CACHE_DIR = "image_manager_disk_cache";

4.清除缓存

    4.1清除所有缓存
         清除所有内存缓存(需要在Ui线程操作)

         Glide.get(this).clearMemory(); 

         清除所有磁盘缓存(需要在子线程操作)

         Glide.get(MainActivity.this).clearDiskCache(); 
         注:在使用中的资源不会被清除

  4.2清除单个缓存
      由于Glide可能会缓存一张图片的多个分辨率的图片,并且文件名是被哈希过的,所以并不能很好的删除单个资源的缓存,以下是官方文档中的描述  

      

   

原文地址:https://www.cnblogs.com/jieling/p/15188300.html