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

Android Studio中如何清理ImageSlider组件通过Glide加载的图片缓存

ImageSlider图片缓存问题解决方案

你使用的denzcoskun/ImageSlider库底层默认使用Glide加载图片,未直接暴露Glide缓存操作接口,可通过以下两种方案解决固定链接每日更新、但展示旧缓存图的问题:

方案1:配置自动过期缓存(推荐,无需主动清理)

通过自定义库的图片加载逻辑,给Glide添加每日更新的签名,实现当天复用缓存、次日自动拉取最新图,适配每日更新图片的场景:

  • 调用库提供的setImageLoadingListener方法重写加载逻辑,给Glide请求添加当日时间戳作为签名,只要日期变化,签名就会变化,Glide会自动跳过旧缓存拉新图
  • 无需手动调用清理方法,适配性更高

示例代码:

imageSlider.setImageLoadingListener(new ImageLoadingListener() {
    @Override
    public void loadImage(ImageView imageView, String url, int position) {
        // 生成当日日期作为签名,同一天签名相同复用缓存,日期变化自动拉新
        long dailySignature = System.currentTimeMillis() / (1000 * 60 * 60 * 24);
        RequestOptions options = new RequestOptions()
                .signature(new ObjectKey(dailySignature))
                .diskCacheStrategy(DiskCacheStrategy.RESOURCE); // 可根据需求调整缓存策略
        Glide.with(imageView.getContext())
                .load(url)
                .apply(options)
                .into(imageView);
    }
});

方案2:主动全局清理Glide缓存

如果需要手动触发缓存清理,直接调用Glide全局清理方法即可,和ImageSlider实例无关,清理后重新加载轮播图列表就会拉取最新图:

  • 磁盘缓存清理必须在子线程执行,内存缓存可在主线程操作

示例代码:

new Thread(() -> {
    // 子线程清理磁盘缓存
    Glide.with(getApplicationContext()).clearDiskCache();
    runOnUiThread(() -> {
        // 主线程清理内存缓存
        Glide.with(getApplicationContext()).clearMemory();
        // 重新加载轮播图
        imageSlider.setImageList(slideModels,true);
    });
}).start();

修改后的完整代码

package com.xperiaplayy1.LoteriaPanamaEnVivo;

import android.os.Bundle;
import android.widget.ImageView;

import androidx.appcompat.app.AppCompatActivity;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.signature.ObjectKey;
import com.denzcoskun.imageslider.ImageSlider;
import com.denzcoskun.imageslider.interfaces.ImageLoadingListener;
import com.denzcoskun.imageslider.models.SlideModel;

import java.util.ArrayList;
import java.util.List;

public class Slider extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_slider);
        ImageSlider imageSlider = findViewById(R.id.slider);
        List<SlideModel> slideModels = new ArrayList<>();
        slideModels.add(new SlideModel("https://www.codeproject.com/KB/testing/1002904/Test-URL-Redirects-HttpWebRequest.jpg","Piramide 1"));
        slideModels.add(new SlideModel("https://shortpixel.com/img/robot_lookleft_wink_big.png","Piramide 2"));
        slideModels.add(new SlideModel("https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png","Piramide 3"));
        slideModels.add(new SlideModel("https://static.remove.bg/remove-bg-web/8fb1a6ef22fefc0b0866661b4c9b922515be4ae9/assets/start_remove-c851bdf8d3127a24e2d137a55b1b427378cd17385b01aec6e59d5d4b5f39d2ec.png","Piramide 4"));
        slideModels.add(new SlideModel("https://media.istockphoto.com/photos/colored-powder-explosion-abstract-closeup-dust-on-backdrop-colorful-picture-id1072093690?k=20&m=1072093690&s=612x612&w=0&h=Ns3WeEm1VrIHhZOmhiGY_fYKvIlbJrVADLqfxyPQVPM=","Piramide 5"));
        
        // 自定义加载逻辑解决缓存旧图问题
        imageSlider.setImageLoadingListener(new ImageLoadingListener() {
            @Override
            public void loadImage(ImageView imageView, String url, int position) {
                long dailySign = System.currentTimeMillis() / (1000 * 60 * 60 * 24);
                RequestOptions options = new RequestOptions()
                        .signature(new ObjectKey(dailySign))
                        .diskCacheStrategy(DiskCacheStrategy.RESOURCE);
                Glide.with(Slider.this)
                        .load(url)
                        .apply(options)
                        .into(imageView);
            }
        });
        
        imageSlider.setImageList(slideModels,true);
    }
}

内容的提问来源于stack exchange,提问作者Carlos Vanegas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:39:04