本文整理匯總了Java中com.jakewharton.disklrucache.DiskLruCache類的典型用法代碼示例。如果您正苦於以下問題:Java DiskLruCache類的具體用法?Java DiskLruCache怎麽用?Java DiskLruCache使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
DiskLruCache類屬於com.jakewharton.disklrucache包,在下文中一共展示了DiskLruCache類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: putDataToDiskLruCache
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
private void putDataToDiskLruCache(Image image) {
try {
/* 第一步:獲取將要緩存的圖片的對應唯一 key 值 */
String key = DiskCacheUtil.getMD5String(image.getUrl());
/* 第二步:獲取 DiskLruCache 的 Editor */
DiskLruCache.Editor editor = mDiskLruCache.edit(key);
if (null != editor) {
/* 第三步:從 Editor 中獲取 OutputStream */
OutputStream outputStream = editor.newOutputStream(0);
/* 第四步:下載網絡圖片且保存至 DiskLruCache 圖片中 */
boolean isSuccessful = download(image.getUrl(), outputStream);
if (isSuccessful) {
editor.commit();
} else {
editor.abort();
}
mDiskLruCache.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
示例2: exist
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
static int exist(String name) {
DiskLruCache diskLruCache = getDiskLruCache();
if (diskLruCache == null) {
return -1;
}
try {
DiskLruCache.Snapshot snapshot = diskLruCache.get(name);
if (snapshot == null) {
return -1;
}
InputStream stream = snapshot.getInputStream(1);
boolean hasBitmap = readBoolean(stream);
return hasBitmap ? 1 : 0;
} catch (IOException e) {
e.printStackTrace();
}
return -1;
}
示例3: cacheInStorage
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
private void cacheInStorage(long id, String articleData) {
String key = Long.toString(id);
if (mDiskCache != null) {
try {
DiskLruCache.Snapshot snapshot = mDiskCache.get(key);
if (snapshot == null) {
DiskLruCache.Editor editor = mDiskCache.edit(key);
OutputStream out = editor.newOutputStream(0);
out.write(articleData.getBytes());
out.close();
editor.commit();
} else {
snapshot.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例4: loadCacheFromStorage
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
public String loadCacheFromStorage(long id) {
String key = Long.toString(id);
if (mDiskCache != null) {
try {
DiskLruCache.Snapshot snapshot = mDiskCache.get(key);
InputStream in = snapshot.getInputStream(0);
if (in != null) {
BufferedInputStream bis = new BufferedInputStream(in);
ByteArrayOutputStream buf = new ByteArrayOutputStream();
int result = bis.read();
while (result != -1) {
buf.write((byte) result);
result = bis.read();
}
return buf.toString("UTF-8");
}
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
示例5: doLoad
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
@Override
protected <T> T doLoad(Type type, String key) {
if (mDiskLruCache == null) {
return null;
}
try {
DiskLruCache.Editor edit = mDiskLruCache.edit(key);
if (edit == null) {
return null;
}
InputStream source = edit.newInputStream(0);
T value;
if (source != null) {
value = mDiskConverter.load(source,type);
Utils.close(source);
edit.commit();
return value;
}
edit.abort();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
示例6: doSave
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
@Override
protected <T> boolean doSave(String key, T value) {
if (mDiskLruCache == null) {
return false;
}
try {
DiskLruCache.Editor edit = mDiskLruCache.edit(key);
if (edit == null) {
return false;
}
OutputStream sink = edit.newOutputStream(0);
if (sink != null) {
boolean result = mDiskConverter.writer(sink, value);
Utils.close(sink);
edit.commit();
return result;
}
edit.abort();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
示例7: fetch
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
public <T> T fetch(String key, Class<T> classOfT) {
key = sanitizeKey(key);
try {
DiskLruCache.Snapshot snapshot = cache.get(key);
if (snapshot != null) {
String data = snapshot.getString(0);
JsonObject entryJson = gson.fromJson(data, JsonObject.class);
Entry entry = gson.fromJson(entryJson, Entry.class);
if (!entry.hasExpired()) {
JsonElement element = entryJson.get(Entry.VALUE);
if (element.isJsonPrimitive()) {
return gson.fromJson(element.getAsJsonPrimitive(), classOfT);
}
return gson.fromJson(element.getAsJsonObject(), classOfT);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
示例8: getCachedTile
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
/**
* Load a tile from cache.
* Returns null if there is no corresponding cache entry or it could not be loaded.
*/
private Tile getCachedTile(String key) {
if (mCache.isClosed()) {
return null;
}
try {
DiskLruCache.Snapshot snapshot = mCache.get(key);
if (snapshot == null) {
// tile is not in cache
return null;
}
final byte[] data = readStreamAsByteArray(snapshot.getInputStream(INDEX_DATA));
final int height = readStreamAsInt(snapshot.getInputStream(INDEX_HEIGHT));
final int width = readStreamAsInt(snapshot.getInputStream(INDEX_WIDTH));
if (data != null) {
LOGD(TAG, "Cache hit for tile " + key);
return new Tile(width, height, data);
}
} catch (IOException e) {
// ignore error
}
return null;
}
示例9: cacheTile
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
private boolean cacheTile(String key, Tile tile) {
if (mCache.isClosed()) {
return false;
}
try {
DiskLruCache.Editor editor = mCache.edit(key);
if (editor == null) {
// editor is not available
return false;
}
writeByteArrayToStream(tile.data, editor.newOutputStream(INDEX_DATA));
writeIntToStream(tile.height, editor.newOutputStream(INDEX_HEIGHT));
writeIntToStream(tile.width, editor.newOutputStream(INDEX_WIDTH));
editor.commit();
return true;
} catch (IOException e) {
// Tile could not be cached
}
return false;
}
示例10: open
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
/**
* 打開DiskLruCache,然後才能進行Cache操作,該方法隻需執行一次,多次執行無效。
* @param context Context 上下文環境
* @param cacheType CACHE_TYPE 緩存數據類型
* @param maxCacheSize int 自定義最大緩存,0~MAX_CACHE_SIZE(10M)之間,<=0則使用默認的最大值
* @return 返回單例實例,提供鏈式調用支持
*/
public DiskCacheHelper open(Context context, CACHE_TYPE cacheType, int maxCacheSize) {
if (mInstance != null && mDiskLruCache != null) {
return mInstance;
}
try {
File cacheDir = getDiskCacheDir(context, cacheType);
if (maxCacheSize > 0 && maxCacheSize <= MAX_CACHE_SIZE) {
mMaxCacheSize = maxCacheSize;
} else {
mMaxCacheSize = MAX_CACHE_SIZE;
}
mDiskLruCache = DiskLruCache.open(cacheDir, getAppVersion(context), 1, mMaxCacheSize);
} catch (Exception e) {
e.printStackTrace();
}
return mInstance;
}
示例11: writeBitmap
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
/**
* 緩存Bitmap數據
* @param key String 緩存數據對應的文件名稱,唯一值
* @param bitmap Bitmap 需要緩存的圖片數據
* @return 返回單例實例,提供鏈式調用支持
*/
public DiskCacheHelper writeBitmap(String key, Bitmap bitmap) {
try {
String cacheKey = hashKeyForDisk(key);
DiskLruCache.Editor editor = mDiskLruCache.edit(cacheKey);
if (editor != null) {
String bitmapString = bitmapToString(bitmap);
if (bitmapString != null) {
editor.set(0, bitmapString);
editor.commit();
} else {
editor.abort();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
return mInstance;
}
}
示例12: readBitmap
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
/**
* 讀取緩存的圖片資源
* @param key String 緩存數據對應的文件名稱,唯一值
* @return 返回Bitmap
*/
public Bitmap readBitmap(String key) {
Bitmap bitmap = null;
try {
String cacheKey = hashKeyForDisk(key);
DiskLruCache.Snapshot snapshot = mDiskLruCache.get(cacheKey);
if (snapshot != null) {
InputStream is = snapshot.getInputStream(0);
bitmap = BitmapFactory.decodeStream(is);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
return bitmap;
}
}
示例13: writeData
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
/**
* 緩存數據對象,以JSON字符串格式保存
* @param key String 緩存數據對應的文件名稱,唯一值
* @param data 需要緩存的JSON字符串
* @return 返回單例實例,提供鏈式調用支持
*/
public DiskCacheHelper writeData(String key, String data) {
try {
String cacheKey = hashKeyForDisk(key);
DiskLruCache.Editor editor = mDiskLruCache.edit(cacheKey);
if (editor != null) {
if (data != null) {
editor.set(0, data);
editor.commit();
} else {
editor.abort();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
return mInstance;
}
}
示例14: ImageLoader
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
private ImageLoader(Context context) {
mContext = context.getApplicationContext();
int maxMemory = (int) Runtime.getRuntime().maxMemory();
int cacheSize = maxMemory / 8;
mMemoryCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight() / 1024;
}
};
File diskCacheDir = getDiskCacheDir(mContext, "bitmap");
if (!diskCacheDir.exists()) {
diskCacheDir.mkdirs();
}
if (getUsableSpace(diskCacheDir) > DISK_CACHE_SIZE) {
try {
mDiskLruCache = DiskLruCache.open(diskCacheDir, 1, 1, DISK_CACHE_SIZE);
mIsDiskLruCacheCreated = true;
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例15: loadBitmapFromHttp
import com.jakewharton.disklrucache.DiskLruCache; //導入依賴的package包/類
/**
* 加載網絡圖片緩存到磁盤中
* @param uri
* @param reqWidth
* @param reqHeight
* @return
*/
private Bitmap loadBitmapFromHttp(String uri, int reqWidth, int reqHeight) {
if (Looper.myLooper() == Looper.getMainLooper()) {
throw new RuntimeException("can not visit network from UI thread.");
}
if (mDiskLruCache == null) {
return null;
}
String key = hashKeyFromUri(uri);
try {
DiskLruCache.Editor editor = mDiskLruCache.edit(key);
if (editor != null) {
OutputStream outputStream = editor.newOutputStream(DISK_CACHE_INDEX);
if (downloadBitmapToStream(uri, outputStream)){
editor.commit();
} else {
editor.abort();
}
mDiskLruCache.flush();
return loadBitmapFromDisCache(uri, reqWidth, reqHeight);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}