Skip to content

Commit 30c6cf9

Browse files
committed
修复偶发的线程被取消时, 导致wait()无法释放锁导致图片无法加载的问题.
1 parent f4f562a commit 30c6cf9

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

library/src/com/lidroid/xutils/bitmap/core/BitmapCache.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,9 @@ protected int sizeOf(MemoryCacheKey key, Bitmap bitmap) {
8888
* background thread.
8989
*/
9090
public void initDiskCache() {
91-
if (!globalConfig.isDiskCacheEnabled()) return;
92-
9391
// Set up disk cache
9492
synchronized (mDiskCacheLock) {
95-
if (mDiskLruCache == null || mDiskLruCache.isClosed()) {
93+
if (globalConfig.isDiskCacheEnabled()) {
9694
File diskCacheDir = new File(globalConfig.getDiskCachePath());
9795
if (diskCacheDir.exists() || diskCacheDir.mkdirs()) {
9896
long availableSpace = OtherUtils.getAvailableSpace(diskCacheDir);
@@ -147,6 +145,7 @@ public Bitmap downloadBitmap(String uri, BitmapDisplayConfig config, final Bitma
147145
try {
148146
mDiskCacheLock.wait();
149147
} catch (Throwable e) {
148+
break;
150149
}
151150
}
152151
}
@@ -266,6 +265,7 @@ public Bitmap getBitmapFromDiskCache(String uri, BitmapDisplayConfig config) {
266265
try {
267266
mDiskCacheLock.wait();
268267
} catch (Throwable e) {
268+
break;
269269
}
270270
}
271271
}
@@ -315,14 +315,14 @@ public void clearMemoryCache() {
315315

316316
public void clearDiskCache() {
317317
synchronized (mDiskCacheLock) {
318+
isDiskCacheReady = false;
318319
if (mDiskLruCache != null && !mDiskLruCache.isClosed()) {
319320
try {
320321
mDiskLruCache.delete();
321322
} catch (Throwable e) {
322323
LogUtils.e(e.getMessage(), e);
323324
}
324325
mDiskLruCache = null;
325-
isDiskCacheReady = false;
326326
}
327327
}
328328
initDiskCache();
@@ -377,6 +377,7 @@ public void flush() {
377377
*/
378378
public void close() {
379379
synchronized (mDiskCacheLock) {
380+
isDiskCacheReady = false;
380381
if (mDiskLruCache != null) {
381382
try {
382383
if (!mDiskLruCache.isClosed()) {

0 commit comments

Comments
 (0)