博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Glide缓存配置
阅读量:5967 次
发布时间:2019-06-19

本文共 2852 字,大约阅读时间需要 9 分钟。

Glide依赖

//这里用的是Android Studio3.0implementation 'com.github.bumptech.glide:glide:4.3.1'annotationProcessor('com.github.bumptech.glide:compiler:4.3.1')implementation 'com.github.bumptech.glide:okhttp3-integration:4.3.1'

Glide本身自带缓存,可以通过继承AppGlideModule自定义一些配置

@GlideModulepublic final class CustomGlideModule extends AppGlideModule {    @Override    public void applyOptions(Context context, GlideBuilder builder) {    //        设置缓存大小为20mb        int memoryCacheSizeBytes = 1024 * 1024 * 20; // 20mb    //        设置内存缓存大小        builder.setMemoryCache(new LruResourceCache(memoryCacheSizeBytes));    //        根据SD卡是否可用选择是在内部缓存还是SD卡缓存        if(SDCardUtils.isSDCardEnable()){            builder.setDiskCache(new ExternalPreferredCacheDiskCacheFactory(context, "HYManagerImages", memoryCacheSizeBytes));        }else {            builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "HYManagerImages", memoryCacheSizeBytes));        }    }    //    针对V4用户可以提升速度    @Override    public boolean isManifestParsingEnabled() {        return false;    }}

Glide跳过内存缓存

GlideApp.with(context)     .load(url)     .skipMemoryCache(true)//默认为false     .dontAnimate()     .centerCrop()     .into(imageView);

Glide磁盘缓存

GlideApp.with(context)            .load(url)            .diskCacheStrategy(DiskCacheStrategy.ALL)            .dontAnimate()            .centerCrop()            .into(imageView);/*默认的策略是DiskCacheStrategy.AUTOMATIC DiskCacheStrategy有五个常量:DiskCacheStrategy.ALL 使用DATA和RESOURCE缓存远程数据,仅使用RESOURCE来缓存本地数据。DiskCacheStrategy.NONE 不使用磁盘缓存DiskCacheStrategy.DATA 在资源解码前就将原始数据写入磁盘缓存DiskCacheStrategy.RESOURCE 在资源解码后将数据写入磁盘缓存,即经过缩放等转换后的图片资源。DiskCacheStrategy.AUTOMATIC 根据原始图片数据和资源编码策略来自动选择磁盘缓存策略。*/

缓存清理

//磁盘缓存清理(子线程)GlideApp.get(context).clearDiskCache();//内存缓存清理(主线程)GlideApp.get(context).clearMemory();

遇到的问题:在配置完CustomGlideModule之后找不到GlideApp类

解决办法:Build-->Rebuild Project

根据需求封装了一个简单的Glide工具类

public class GlideUtils {    public static void initImageWithFileCache(Context context, String url, ImageView imageView){        GlideApp.with(context)                .load(url)                .diskCacheStrategy(DiskCacheStrategy.ALL)                .dontAnimate()                .centerCrop()                .into(imageView);    }    public static void initImageNoCache(Context context, String url, ImageView imageView){        GlideApp.with(context)                .load(url)                .skipMemoryCache(true)                .dontAnimate()                .centerCrop()                .into(imageView);    }    public static void clearMemoryCache(Context context){        GlideApp.get(context).clearMemory();    }    public static void clearFileCache(Context context){        new Thread(new Runnable() {            @Override            public void run() {                GlideApp.get(context).clearDiskCache();            }        }).start();    }}

转载地址:http://xhtax.baihongyu.com/

你可能感兴趣的文章
组策略之文件夹的重定向
查看>>
Silverlight 2 控件 SDK 源代码
查看>>
ACM入门。
查看>>
利用VMware Infrastructure SDK编程控制虚拟机集群(2)
查看>>
Web服务器的配置与管理(1) IIS的安装与基本设置
查看>>
Nagios 监控 SNMP 温度计
查看>>
□□□□□□(此处略去X个字)
查看>>
在svn中发布多个工程
查看>>
解决Lync 2013演示PPT提示证书问题的多种方法
查看>>
大数据发展火爆,云计算平台主打安全至上
查看>>
[CTO札记]消除2种官僚文化现象
查看>>
SilverLight 初探一
查看>>
Windows To Go:Windows 8住进U盘里
查看>>
软件开发中团队能力的培养
查看>>
在SPS中直接查看用HTML格式阅读Office文档
查看>>
烂泥:centos6.4服务器添加新硬盘
查看>>
VC++动态链接库(DLL)编程(三)――MFC规则DLL
查看>>
组策略命令行工具之组策略结果检测工具GpResult
查看>>
“重试”的实现
查看>>
【MySQL数据库开发之三】MySQL 获得数据库和表操作!
查看>>