Glide遇到的问题与解决方法

深入 Glide 源码探究解决加载图片超时问题 想必大家在开发图片相关的 Android 项目中也可能会碰到图片下载超时问题,希望本章的深入 Glide 源码探究解决超时问题的分析对大家有所帮助和启发。 阅读详情


在使用中遇到的问题记载。

适配androidx问题

遇到android.support.annotation.NonNull找不到问题
在这里插入图片描述

由于目前新项目已经都迁移到了androidx原因,已经移除了support包了。这里需要作出以下修改:

  1. 修改gradle.properties文件,添加如下:
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
  1. 保持最新版本一致,主要如下:
    api 'com.github.bumptech.glide:annotations:4.9.0'
    api 'com.github.bumptech.glide:glide:4.9.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'

  1. 添加androidx注解处理器:
  annotationProcessor 'androidx.annotation:annotation:1.1.0'

完成上面三步后(可先删除build目录下的错误文件),重新编译build,就正常了:
在这里插入图片描述

播放gif速率慢问题

记:有一次线上问题,说一华为手机加载gif后,播放速率跟预期的慢很多。百度得到一些得到解决方案:一、使用android-gif-drawable库去加载gif;二、反射glide代码去修改速率。这里给出第二种解决方案代码:

  GlideApp.with(mContext)
                    .asGif()
                    .load(R.drawable.icon_wumaheyi_guide)
                    .apply(requestOptions)
                    .into(new SimpleTarget<GifDrawable>(){

                        /**
                         * The method that will be called when the resource load has finished.
                         *
                         * @param resource   the loaded resource.
                         * @param transition
                         */
                        @Override
                        public void onResourceReady(GifDrawable resource, Transition<? super GifDrawable> transition) {
                            try {
                                Field field = GifDecoder.class.getDeclaredField("header");
                                field.setAccessible(true);
                                GifHeader header = (GifHeader) field.get(resource.getFirstFrame());
                                Field field2 = GifHeader.class.getDeclaredField("frames");
                                field2.setAccessible(true);
                                List frames = (List) field2.get(header);
                                if (frames.size()>0){
                                    Field delay = frames.get(0).getClass().getDeclaredField("delay");
                                    delay.setAccessible(true);
                                    for (Object frame : frames) {
                                        delay.set(frame,40);//这里直接给修改成了20
                                    }
                                }
                            } catch (NoSuchFieldException | IllegalAccessException e) {
                                e.printStackTrace();
                            }
                            mIvGoTask.setImageDrawable(resource);
                            resource.setLoopCount(Integer.MAX_VALUE);
                            resource.start();
                        }
                    });

使用了反射,要注意keep避免混淆

glide activity has been destroyed

上下文销毁了,glide加载的生命周期是创建一个fragment依靠于activity,所以当activity销毁时候就会报以上错。解决方式:判断空、使用Application上下文。

  if(mContext instanceof Activity){
                if (((Activity) mContext).isDestroyed() || ((Activity) mContext).isFinishing()) {
                    return;
                }
            }
APP图片缓存与Glide之signature的分析 在缓存网络图片的过程中,有一种情况是图片的地址不变,但图片发生了变化,如果只按照图片的地址进行缓存,在加载缓存中的图片时就会发生图片一直显示为旧图的现象。 本文就此问题结合Glide的处理方法进行简要分析。 阅读详情

相关推荐

LS-Dyna模态分析实战:从模型构建到结果解读的全流程指南

本文提供了一份详尽的LS-Dyna模态分析实战指南。文章系统讲解了如何利用LS-Dyna内置的隐式求解器进行特征值求解,从模型构建、几何清理、材料与连接设置,到核心的边界条件与隐式求解控制(如*CONTROL_IMPLICIT_EIGENVALUE),最后完成计算并解读频率与振型结果。旨在帮助工程师在熟悉的环境中高效完成结构振动特性分析,为后续动态响应分析奠定基础。

info6的博客 263

Android图片缓存框架 - Glide初始化配置 (八)

目录   1. Glide API 2. Glide导入包 3. Glide 7种加载图片方式 4. 取消加载 5 Glide加载GIF 6. Glide的RequestOption 7. Glide自定义圆角 8. RequestBuilder 9. Glide设置Listener 10 Glide初始化配置 10.1  初始化配置开发步骤 10.2 内存缓存配置 1...

牛八少爷的专栏 3955

如何理解界面陷阱电荷呢(interface trapped charge)和费米钉扎效应?

如何理解界面陷阱电荷呢?(interface trapped charge) 我们在学半导体物理的时候经常对各种界面态和陷阱分不清楚,然而这却是半导体中最为关键的知识点之一。我这路主要介绍一下如何比较直观地理解界面陷阱电荷,应该也有叫界面态,快态之类的。 在介绍界面陷阱电荷之前,我们可以回顾一下施主(donor)和受主(acceptor)的概念。在si中如果掺杂了n型杂质P,那么P由于最外层电子有5个,有一个电子比较容易跑走,成为自由移动的导电电子,在能带中可以表现为电子从禁带中的能级跃迁到导带,这种情况我

Wang_P_P的博客 3万+

Could not find annotations-4.9.0.jar 异常

参考文章 https://blog.youkuaiyun.com/coderfc/article/details/111316102。更换顺序后确实没问题了。

光年的博客 619

用友U8库龄分析避坑指南:物料出入库日期计算的5个常见错误

本文深入剖析了在用友U8系统中进行库龄分析时,物料出入库日期计算的五个常见陷阱。从数据源选择、业务类型过滤、计价方式逻辑、期初数据处理到查询性能优化,逐一解析错误根源并提供避坑指南,帮助企业获得准确的库龄数据,有效管理库存与资金风险。

weixin_29209801的博客 456

IAR9.4报错之编码方式

IAR9.40编码方式错误导致的报错

qq_36081075的博客 2626

使用Glide迁移图片加载框架遇到的一些问题

背景 因为项目原有的图片加载框架已经不满足新的业务需求,而且改造成本较大,本人经过慎重的技术选型,将原有的图片加载框架整体迁移成Glide。在这个过程中我遇到了不少问题,跟大家分享一下。 1.如果ImageView不可见 或者 width为0 或者 height为0,glide是不会加载图像的。 项目中遇到ImageView并没有add到UI上,只是用来加载图像,获取drawing cach...

陆业聪 2122

Python+Tableau 全流程数据分析实战:从数据清洗到商业洞察可视化

本文通过Python+Tableau完整演示电商销售数据分析流程。首先使用Python进行数据清洗(缺失值处理、异常值过滤等)和探索性分析(商品类别、时间趋势等),然后导入Tableau创建交互式可视化仪表盘。分析发现电子产品销售额最高但利润率低,美妆类利润率最优,东部地区销售表现最好。最终提出优化供应链、加强美妆推广等商业建议,展示了Python数据处理与Tableau可视化的高效配合。所有代码可直接运行,适合数据分析初学者和从业者实战参考。

weixin_44520581的博客 337

glide4.9.0源码解析

引用 implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0' 使用 Glide.with(GlideActivity.this) .load(url) .centerCr...

fengyongge的专栏 1125

具身智能 | 从具身智能出发谈多传感器融合技术

多传感器融合感知是具身智能系统突破“感知—认知—行动”闭环的核心使能技术。本文从具身智能的视角出发,对多传感器融合技术进行系统综述。首先阐述了具身智能对多传感器融合提出的独特需求,包括异构感知集成、跨模态语义对齐和实时闭环决策。其次,构建了多层级融合技术分类框架,从数据层融合、特征层融合、决策层融合、时序融合到多模态大语言模型(MLLM)融合,逐层梳理主流方法与演进脉络。在此基础上,分析了面向具身智能的通用融合架构设计,涵盖了感知—推理—执行三层架构及其关键组件。

尘世冰封的专栏 311

大模型之Spring AI实战系列(二十六):Spring Boot + DeepSeek 实战指南:构建AI聊天应用

在人工智能技术飞速发展的今天,大型语言模型已经成为了推动技术创新的重要力量。DeepSeek作为国内领先的大型语言模型提供商,其推出的DeepSeek系列模型在多个领域都展现出了卓越的性能。本文将详细介绍如何使用Spring Boot框架集成DeepSeek API,构建一个简单的AI聊天应用。我们将实现两个核心功能:普通文本生成和流式文本生成。

寻道AI,探索AI无限可能! 2264

Glide3升级到Glide4遇到的问题以及解决方法

第一点:设置过渡动画 Glide3 Glide.with(this) .load(img1) .placeholder(R.drawable.ic_launcher_background) .error(R.drawable.ic_launcher_background) ...

ysh_123 1506

诊断CAPL自动化(5) ——没有CANdela,无法编辑cdd数据库文件,也能轻松完成诊断测试

🍅我们知道cdd数据库文件,是CANoe测试环境的重要组件,它可以让我们更加轻松的完成诊断测试工作;但是创建和编辑cdd文件是需要CANdela 来完成的,一个 liscense 就要将近二十万,成本确实高🍅特别是在处理22/2E/31服务的时候,频繁的增加功能,可能需要频繁的用CANdela 修改CDD,我测试开发过程中,一般很少去修改cdd,有这个时间,纯手撸也开发完了,就一个CANdela,鬼知道此时此刻到了谁手里,我也懒得去找。🍅演示软硬件环境;目录📘前言。

蚂蚁小兵 5756

android glide缺少方法,【Android】解决Androidx使用Glide报错问题

第一步:implementation 'com.github.bumptech.glide:glide:4.9.0'annotationProcessor 'androidx.annotation:annotation:1.1.0' // 必须添加,防止android.support.annotation找不到kapt 'com.github.bumptech.glide:compiler:4.9...

weixin_42121058的博客 1939

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Glide OOM问题解决方法汇总

1、引入largeHeap属性,让系统为App分配更多的独立内存。2、禁止Glide内存缓存。设置skipMemoryCache(true)。3、自定义GlideModule。设置MemoryCache和BitmapPool大小。4、升级到Glide4.0,使用asDrawable代替asBitmap,drawable更省内存。5、ImageView的scaleType为fitXY时,改为fitC...

飞翔的熊blabla 951

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Glide Exception:"You must not call setTag() on a view Glide is targeting问题解决方法

异常原因:    Glide加载的iamgeView调用了setTag()方法,因为Glide已经默认为ImageView设置了Tag。   解决方案:  首先,在\res\values\文件夹下创建ids.xml文件(如果没有该文件的话),并添加以下代码:   &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;resources&g...

小白新人 893

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

使用Glide时出现 OOM问题解决方法汇总

1、引入largeHeap属性,让系统为App分配更多的独立内存。 2、禁止Glide内存缓存。设置skipMemoryCache(true)。 3、自定义GlideModule。设置MemoryCache和BitmapPool大小。 4、升级到Glide4.0,使用asDrawable代替asBitmap,drawable更省内存。 5、ImageView的scaleT...

Android格调小窝 1440

glide使用bug之加载图片模糊问题

       glide联网加载图片,特别是比较小的图片的时候,会特别模糊、锯齿很严重,最后通过如下方法解决: Glide.with(mContext).load(url) .placeholder(R.drawable.icon_default_circle) .error(R.drawable.icon_default_cir...

zhq217217的博客 7362

【Glide】asBitmap爆红的解决方法

参考资料

weixin_44002043的博客 608

Glide 中 centerCrop() 与 .transform() 共用问题(包括 4.0.0 以上解决方法)

转载请注明出处:http://blog.youkuaiyun.com/Alpha58/article/details/56835558当我们在显示一张图片的时候,想让他等比例缩放到ImageView的大小,又想这张图片实现矩形圆角.我们一开始会想到这么设置.transform(new GlideRoundImage(getActivity()))But,这样设置后,图片只有centerCrop效果,却没有矩形圆

wildma的博客 9390

glide使用bitmap之后占位图不显示

问题:因为要裁剪图片的所以使用了bitmap,但是使用之后占位图不显示了 原因:options的placeholder最终是不是要设置给imageview,但是你这里又没传给他imageview,你传的是SimpleTarget,那么他上哪找imageview帮你自动设置placeholder 解决方法1:本人亲测可行 在xml中直接设置src就行 <ImageView ...

a_sid的博客 1014

Android Glide图片加载框架图片变色变绿解决方法

图片变色的原因是因为图片压缩所致,一半是webp会出现这样的情况。 所以在使用Glide的缓存机制的时候,缓存原图片即可。 [java] view plain copy   Glide.with(a).load(url).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(i);   关键点是 .di

开享 2761

Glide 加载优化

Android一般情况使用Glide加载图片,但是使用不注意就会有些问题:比较大的list的图片列表快速滚动,当前的图片需要等前面的加载才可以加载,分析如下: 1. listview的item中使用glide加载图片,当有需要对加载图片二次处理使用重新simpleTarget,然后给into,如下所示 Glide.with(mContext).load("http...

chenrunhua的专栏 4760
上一篇: Glide4.0+使用
下一篇: okhttp实现连接池原理
HUandroid
博客等级 码龄10年 35粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值