當前位置: 首頁>>代碼示例>>Java>>正文


Java DiskLruCache類代碼示例

本文整理匯總了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();
        }
    }
 
開發者ID:InnoFang,項目名稱:Android-Code-Demos,代碼行數:25,代碼來源:DiskCacheObservable.java

示例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;
    }
 
開發者ID:nichbar,項目名稱:Aequorea,代碼行數:21,代碼來源:BitmapWrapper.java

示例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();
        }
    }
}
 
開發者ID:nichbar,項目名稱:Aequorea,代碼行數:22,代碼來源:ArticleCache.java

示例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 "";
}
 
開發者ID:nichbar,項目名稱:Aequorea,代碼行數:24,代碼來源:ArticleCache.java

示例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;
}
 
開發者ID:zhou-you,項目名稱:RxEasyHttp,代碼行數:26,代碼來源:LruDiskCache.java

示例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;
}
 
開發者ID:zhou-you,項目名稱:RxEasyHttp,代碼行數:24,代碼來源:LruDiskCache.java

示例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;
}
 
開發者ID:myntra,項目名稱:ObjectCache,代碼行數:22,代碼來源:ObjectCache.java

示例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;
}
 
開發者ID:dreaminglion,項目名稱:iosched-reader,代碼行數:29,代碼來源:CachedTileProvider.java

示例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;
}
 
開發者ID:dreaminglion,項目名稱:iosched-reader,代碼行數:21,代碼來源:CachedTileProvider.java

示例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;
}
 
開發者ID:ymqq,項目名稱:CommonFramework,代碼行數:26,代碼來源:DiskCacheHelper.java

示例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;
    }
}
 
開發者ID:ymqq,項目名稱:CommonFramework,代碼行數:26,代碼來源:DiskCacheHelper.java

示例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;
    }
}
 
開發者ID:ymqq,項目名稱:CommonFramework,代碼行數:21,代碼來源:DiskCacheHelper.java

示例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;
    }
}
 
開發者ID:ymqq,項目名稱:CommonFramework,代碼行數:25,代碼來源:DiskCacheHelper.java

示例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();
        }
    }

}
 
開發者ID:wuhighway,項目名稱:DailyStudy,代碼行數:26,代碼來源:ImageLoader.java

示例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;
}
 
開發者ID:wuhighway,項目名稱:DailyStudy,代碼行數:33,代碼來源:ImageLoader.java


注:本文中的com.jakewharton.disklrucache.DiskLruCache類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。