UIL 更新缓存图像

UIL update cached images

我想使用 URL 显示 Facebook 个人资料图片,但每当用户更改其个人资料图片时,此库不会更新缓存图像。

我的UIL版本是1.9.3,显示选项:

    new DisplayImageOptions.Builder()
            .showImageOnLoading(android.R.color.white)
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .considerExifParams(true)
            .build();

那么我应该如何检查 url 中的图像是否发生了变化?或者您知道另一个具有此功能的图书馆吗?

谢谢!

UIL 具有多线程图像加载(异步或同步)。查看 github.

上的图书馆功能

您在光盘(设备的文件系统或 SD 卡)上启用缓存 .cacheOnDisk(true)。库从该缓存加载图像。禁用光盘缓存 .cacheOnDisk(false) 并在 Activity 中写入以下代码:

 @Override
protected void onCreate(Bundle savedInstanceState) {    
    super.onCreate(savedInstanceState);
    ...
    DisplayImageOptions displayOptions = new DisplayImageOptions.Builder()
                .showImageOnLoading(R.drawable.ic_preview)
                .showImageForEmptyUri(R.drawable.ic_preview)
                .showImageOnFail(R.drawable.ic_preview)
                .cacheInMemory(true)
                .cacheOnDisc(false)
                .considerExifParams(true)
                .build();

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
                .writeDebugLogs()
                .defaultDisplayImageOptions(displayOptions)             
                .build();

    ImageLoader imageLoader = ImageLoader.getInstance();
    imageLoader.init(config);

    AnimateFirstDisplayListener animate  = new AnimateFirstDisplayListener();

    imageLoader.displayImage(YourImageURL, userIv, animate);
    ...
}

public static class AnimateFirstDisplayListener extends SimpleImageLoadingListener {

    static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>());

    @Override
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
        if (loadedImage != null) {
            ImageView imageView = (ImageView) view;
            boolean firstDisplay = !displayedImages.contains(imageUri);
            if (firstDisplay) {
                FadeInBitmapDisplayer.animate(imageView, 500);
                displayedImages.add(imageUri);
            }
        }
    }
}