0

我需要通过从服务器再次请求来任意替换缓存的图像。

我目前正在使用 removeFromCache 如下:

public void loadImage(String url, ImageView view, boolean updateCache){
    if(updateCache){
        MemoryCacheUtil.removeFromCache(url, ImageLoader.getInstance().getMemoryCache());
    }
    ImageLoader.getInstance().displayImage(url, view);
}

问题是有时它会抛出 ConcurrentModificationException。

最好的方法是什么?

  • 我可以以某种方式同步我的调用以删除库内部使用的集合吗?
  • 图书馆是否给了我另一种方式来告诉我想任意“缓存未命中”一个图像?

UIL 版本为 1.8.4

堆栈跟踪:

致命异常:在 java.util.HashSet 的 java.util.LinkedHashMap$KeyIterator.next(LinkedHashMap.java:370) 的 java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:350) 的主要 java.util.ConcurrentModificationException。 (HashSet.java:76) 在 com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache.keys(LruMemoryCache.java:124) 在 com.nostra13.universalimageloader.core.assist.MemoryCacheUtil.removeFromCache(MemoryCacheUtil.java:102 ) 在 uk.frequency.glance.android.util.ImageLoadingManager.loadImage(ImageLoadingManager.java:120)

4

1 回答 1

0

这是已知的错误:https ://github.com/nostra13/Android-Universal-Image-Loader/issues/265

在 UIL v1.8.5中修复。

于 2013-07-12T09:50:35.230 回答