Universal Image Loader:尝试从缓存中删除图像时,我收到ConcurrentModificationException

时间:2013-07-11 11:47:02

标签: android caching universal-image-loader concurrentmodification

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

我目前正在使用removeFromCache,如下所示:

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

问题是有时会抛出ConcurrentModificationException。

最好的方法是什么?

  • 我可以同步我的调用以删除内部使用的Collection 在某种程度上在图书馆?
  • 图书馆是否给了我另一种说法 我想任意“缓存未命中”一个图像?

UIL版本是1.8.4

堆栈追踪:

  

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

1 个答案:

答案 0 :(得分:0)

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

已在UIL v1.8.5 中修复。