Android Volley FrameworkのImageLoader機能の簡単なデモを作成しようとしています。コンストラクタは次のとおりです。
public ImageLoader(RequestQueue queue, ImageCache imageCache)
問題は、ImageCache
. その JavaDoc は次のように述べています。
シンプルなキャッシュ アダプタ インターフェイス。ImageLoader に提供された場合、Volley にディスパッチする前に L1 キャッシュとして使用されます。実装はブロックしてはなりません。LruCache を使用した実装をお勧めします。
- このコンテキストでの「実装をブロックしてはならない」とは正確には何を意味するのでしょうか?
- 既存のファイル キャッシュをノンブロッキングに変換する方法を自己教育するために使用できるノンブロッキング ファイル キャッシュ (非 Android でも「純粋な」Java) の例はありますか?
そのようなものが存在しない場合-既存の実装を使用することのマイナスの影響は何ですか(ファイルからの読み取りのみ):
public byte[] get(文字列ファイル名) {
byte[] ret = null; if (filesCache.containsKey(filename)) { FileInfo fi = filesCache.get(filename); BufferedInputStream input; String path = cacheDir + "/" + fi.getStorageFilename(); try { File file = new File(path); if (file.exists()) { input = new BufferedInputStream(new FileInputStream(file)); ret = IOUtils.toByteArray(input); input.close(); } else { KhandroidLog.e("Cannot find file " + path); } } catch (FileNotFoundException e) { filesCache.remove(filename); KhandroidLog.e("Cannot find file: " + path); } catch (IOException e) { KhandroidLog.e(e.getMessage()); } } return ret;
}