Android的UIL:“cache is closed”

4

我已经使用这个很棒的库有好几个月了,没有任何问题,效果很好 :)

在我的上一个应用程序中,我通过crashlytics收到了很多此类错误报告,但我自己无法复现。有人知道它是如何发生的,以及我该如何更正我的应用程序,以避免这种行为?我知道这不是一个库的问题,肯定是我的应用程序的问题,但我不明白它为什么会发生。

谢谢!

java.lang.IllegalStateException: 缓存已关闭,在com.nostra13.universalimageloader.cache.disc.impl.ext.DiskLruCache.checkNotClosed(DiskLruCache.java:642) 在com.nostra13.universalimageloader.cache.disc.impl.ext.DiskLruCache.get(DiskLruCache.java:413) 在com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiscCache.get(LruDiscCache.java:124) 在com.nostra13.universalimageloader.core.ImageLoaderEngine$1.run(ImageLoaderEngine.java:72) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 在java.lang.Thread.run(Thread.java:841)


请分享您遇到错误的代码。 - koutuk
这就是问题所在,我自己无法重现它,我只能从Crashlytics中获取这个堆栈跟踪信息,而日志没有显示更多的信息。我想了解在UIL中触发此错误的情况(除了缓存关闭之外),以及它如何处于这种状态(例如活动或片段的错误终止)。 - schusss
我刚刚遇到了同样的错误。我打开了一个应该显示图像的屏幕,结果应用程序崩溃了。 - Kaloyan Roussev
如果我是你,我不会使用一个库。请参考https://dev59.com/T5_ha4cB1Zd3GeqPtyKP - iOSAndroidWindowsMobileAppsDev
1个回答

2
此异常来自于`DiskLruCache`的`checkNotClosed`方法。当`journalWriter`为null时,就会发生这种异常。
当`journal`大小减半时,`journalWriter`将关闭并开始重建。在此期间进行任何操作都会导致此异常。
日志位于缓存文件夹下,请检查是否已更改或删除。
如果要清除磁盘缓存,最好使用框架API来清除磁盘缓存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接