You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Glide加载原图耗时过长时如何自动加载备用图片?

Glide加载图片超时自动切换备用图解决方案

问题根因

  • 原有代码中error()的使用方式错误,无需嵌套Glide加载逻辑
  • Glide超时配置未正确生效,通常是版本适配问题、测试场景未规避缓存影响导致

基础解决方案(优先使用)

直接配置请求级超时,超时后自动触发error逻辑加载备用图,正确写法如下:

Glide.with(this)
     .load(url)
     .timeout(3000) // 单位为毫秒,此处设置3秒超时,可自行调整时长
     .error(errorUrl) // 直接传入备用图的URL、资源ID或者Drawable即可
     .into(imageView);

常见不生效排查点

  • 测试时建议临时关闭内存和磁盘缓存,避免本地已缓存的资源直接返回,无法触发网络超时逻辑:
    Glide.with(this)
         .load(url)
         .timeout(3000)
         .diskCacheStrategy(DiskCacheStrategy.NONE)
         .skipMemoryCache(true)
         .error(errorUrl)
         .into(imageView);
    
  • 若使用Glide 3.x版本,无单独的请求级timeout()方法,需通过自定义GlideModule配置全局网络超时。

手动超时控制方案(适配复杂场景)

如果默认超时逻辑仍不满足需求,可以通过Handler+RequestListener自行控制超时时机,灵活度更高:

int LOAD_TIMEOUT = 3000;
Handler mainHandler = new Handler(Looper.getMainLooper());
Runnable timeoutRunnable = () -> {
    // 超时后直接加载备用图
    Glide.with(this)
         .load(errorUrl)
         .into(imageView);
};

Glide.with(this)
     .load(url)
     .listener(new RequestListener<Drawable>() {
         @Override
         public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
             mainHandler.removeCallbacks(timeoutRunnable);
             return false;
         }

         @Override
         public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
             // 加载成功,移除超时任务
             mainHandler.removeCallbacks(timeoutRunnable);
             return false;
         }
     })
     .error(errorUrl)
     .into(imageView);

// 启动超时计时
mainHandler.postDelayed(timeoutRunnable, LOAD_TIMEOUT);

注意:在页面销毁的生命周期(如onDestroy())中需调用mainHandler.removeCallbacks(timeoutRunnable)移除未执行的任务,避免内存泄漏。

内容的提问来源于stack exchange,提问作者Evian Pringle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:06:03