Glide-自定义缓存

本文介绍了如何在Glide中实现自定义缓存,包括如何调整内存缓存大小,自定义私有和外部磁盘缓存路径,并提供了完全自定义缓存目录的方法。通过这些配置,可以更好地优化图片加载的性能和存储管理。
部署运行你感兴趣的模型镜像

前言:

在前面的文章中,我们介绍了如何对Glide进行默认配置的基础知识,现在我们就来介绍如何配置自定义缓存

Glide 系列目录

1.如何使用GlideModule

首先我们要对Glide进行默认配置,需要了解如何使用GlideModule,前面文章已经做了详细介绍了,这边就不再介绍了

如何使用GlideModule

http://blog.csdn.net/yulyu/article/details/55194237

前面还介绍了关于Glide缓存的基础知识,有兴趣的也可以看看

Glide缓存基础知识

http://blog.csdn.net/yulyu/article/details/55096713

2.自定义内存缓存

通过调用builder的setXXX方法就可以自定义内存缓存的大小了

(MemoryCach以及BitmapPool都与内存缓存有关)

public class XiayuGlideModule implements GlideModule {

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        //配置内存缓存大小 10MB
        builder.setMemoryCache(new LruResourceCache(10*1024*1024));
        //配置图片池大小   20MB
        builder.setBitmapPool(new LruBitmapPool(20*1024*1024));
    }

    @Override
    public void registerComponents(Context context, Glide glide) {

    }
}

但是内存缓存的大小数值其实不应该是随便配置的,Glide的内部的默认值是通过一系列的计算获取的,比如说判断手机是否高配置手机等(有兴趣的可以去看他的源码,或者等待本系列后面的源码分析)
这样有个取巧的办法,就是获取Glide默认的设置,然后在这个设置的基础上进行修改

public class XiayuGlideModule implements GlideModule {

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        //获取内存计算器
        MemorySizeCalculator calculator = new MemorySizeCalculator(context);
        //获取Glide默认内存缓存大小
        int                  defaultMemoryCacheSize = calculator.getMemoryCacheSize();
        //获取Glide默认图片池大小
        int                  defaultBitmapPoolSize  = calculator.getBitmapPoolSize();
        //将数值修改为之前的1.1倍
        int                  myMemoryCacheSize  = (int) (1.1 * defaultMemoryCacheSize);
        int                  myBitmapPoolSize   = (int) (1.1 * defaultBitmapPoolSize);
        //修改默认值
        builder.setMemoryCache(new LruResourceCache(myMemoryCacheSize));
        builder.setBitmapPool(new LruBitmapPool(myBitmapPoolSize));
    }

    @Override
    public void registerComponents(Context context, Glide glide) {

    }
}

3.自定义磁盘缓存

磁盘缓存按照访问权限及路径可以分为两种
- 私有缓存 (自己本app可以使用,目录在data/data/应用包名 下面)
- 外部缓存(都可以访问,目录在扩展空间内,如SD卡)


3.1私有缓存

下面这样配置的话,主要是修改缓存大小,缓存路径仍为默认路径(即data/data/应用包名/cache/image_manager_disk_cache)

public class XiayuGlideModule implements GlideModule {

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        //设置磁盘缓存大小
        int size = 100 * 1024 * 1024;
        //设置磁盘缓存
        builder.setDiskCache(new InternalCacheDiskCacheFactory(context, size));
    }

    @Override
    public void registerComponents(Context context, Glide glide) {

    }
}

如果需求修改缓存路径的话,需要增加一下参数即可(变为data/data/应用包名/cache/xiayu)

    //设置磁盘缓存大小
    int size = 100 * 1024 * 1024;
    String dir = "xiayu";
    //设置磁盘缓存
    builder.setDiskCache(new InternalCacheDiskCacheFactory(context,dir, size));

3.2外部缓存

下面这样配置的话,缓存会在 SDCard/Android/data/应用包名/cache/image_manager_disk_cache目录下

public class XiayuGlideModule implements GlideModule {

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        //设置磁盘缓存大小
        int size = 100 * 1024 * 1024;
        //设置磁盘缓存
        builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, size));
    }

    @Override
    public void registerComponents(Context context, Glide glide) {

    }
}

如果需求修改缓存路径的话,需要增加一下参数即可(变为SDCard/Android/data/应用包名/cache/xiayu)

    //设置磁盘缓存大小
    int size = 100 * 1024 * 1024;
    String dir = "xiayu";
    //设置磁盘缓存
    builder.setDiskCache(new ExternalCacheDiskCacheFactory(context,dir, size));

3.3完全自定义路径

上面两种缓存都是把缓存的父目录定死的,能够改变的只是子目录,Glide还提供了一种方式可以完全自定义缓存目录

(需要注意的是这里的路径是配置的绝对路径,所以如果没有指定在sd卡目录下的话是无法直接看到的)

public class XiayuGlideModule implements GlideModule {

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        //设置磁盘缓存大小
        int size = 100 * 1024 * 1024;
        String dirFolder = "xia";
        String dirName = "yu";
        //设置磁盘缓存
        builder.setDiskCache(new DiskLruCacheFactory(dirFolder, size));

        //builder.setDiskCache(new DiskLruCacheFactory(dirFolder, dirName,size));
    }

    @Override
    public void registerComponents(Context context, Glide glide) {

    }
}

热门文章

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值