Promandai Movies v1.0版本的 MD5 值为:f2221e4d815efd1a22bf82a42afa3663
以下内容为反编译后的 DiskLruCacheWrapper.java 源代码,内容仅作参考
package com.bumptech.glide.load.engine.cache;
import android.util.Log;
import com.bumptech.glide.disklrucache.DiskLruCache;
import com.bumptech.glide.load.Key;
import com.bumptech.glide.load.engine.cache.DiskCache;
import java.io.File;
import java.io.IOException;
public class DiskLruCacheWrapper implements DiskCache {
private static final int APP_VERSION = 1;
private static final String TAG = "DiskLruCacheWrapper";
private static final int VALUE_COUNT = 1;
private static DiskLruCacheWrapper wrapper;
private final File directory;
private DiskLruCache diskLruCache;
private final long maxSize;
private final DiskCacheWriteLocker writeLocker = new DiskCacheWriteLocker();
private final SafeKeyGenerator safeKeyGenerator = new SafeKeyGenerator();
@Deprecated
public static synchronized DiskCache get(File directory, long maxSize) {
DiskLruCacheWrapper diskLruCacheWrapper;
synchronized (DiskLruCacheWrapper.class) {
if (wrapper == null) {
wrapper = new DiskLruCacheWrapper(directory, maxSize);
}
diskLruCacheWrapper = wrapper;
}
return diskLruCacheWrapper;
}
public static DiskCache create(File directory, long maxSize) {
return new DiskLruCacheWrapper(directory, maxSize);
}
@Deprecated
protected DiskLruCacheWrapper(File directory, long maxSize) {
this.directory = directory;
this.maxSize = maxSize;
}
private synchronized DiskLruCache getDiskCache() throws IOException {
if (this.diskLruCache == null) {
this.diskLruCache = DiskLruCache.open(this.directory, 1, 1, this.maxSize);
}
return this.diskLruCache;
}
@Override
public File get(Key key) {
String safeKey = this.safeKeyGenerator.getSafeKey(key);
if (Log.isLoggable(TAG, 2)) {
Log.v(TAG, "Get: Obtained: " + safeKey + " for for Key: " + key);
}
try {
DiskLruCache.Value value = getDiskCache().get(safeKey);
if (value == null) {
return null;
}
File result = value.getFile(0);
return result;
} catch (IOException e) {
if (!Log.isLoggable(TAG, 5)) {
return null;
}
Log.w(TAG, "Unable to get from disk cache", e);
return null;
}
}
@Override
public void put(Key key, DiskCache.Writer writer) {
DiskLruCache diskCache;
DiskLruCache.Value current;
String safeKey = this.safeKeyGenerator.getSafeKey(key);
this.writeLocker.acquire(safeKey);
try {
if (Log.isLoggable(TAG, 2)) {
Log.v(TAG, "Put: Obtained: " + safeKey + " for for Key: " + key);
}
try {
diskCache = getDiskCache();
current = diskCache.get(safeKey);
} catch (IOException e) {
if (Log.isLoggable(TAG, 5)) {
Log.w(TAG, "Unable to put to disk cache", e);
}
}
if (current == null) {
DiskLruCache.Editor editor = diskCache.edit(safeKey);
if (editor == null) {
throw new IllegalStateException("Had two simultaneous puts for: " + safeKey);
}
try {
File file = editor.getFile(0);
if (writer.write(file)) {
editor.commit();
}
} finally {
editor.abortUnlessCommitted();
}
}
} finally {
this.writeLocker.release(safeKey);
}
}
@Override
public void delete(Key key) {
String safeKey = this.safeKeyGenerator.getSafeKey(key);
try {
getDiskCache().remove(safeKey);
} catch (IOException e) {
if (Log.isLoggable(TAG, 5)) {
Log.w(TAG, "Unable to delete from disk cache", e);
}
}
}
@Override
public synchronized void clear() {
try {
getDiskCache().delete();
resetDiskCache();
} catch (IOException e) {
if (Log.isLoggable(TAG, 5)) {
Log.w(TAG, "Unable to clear disk cache or disk cache cleared externally", e);
}
resetDiskCache();
}
}
private synchronized void resetDiskCache() {
this.diskLruCache = null;
}
}