gpt4 book ai didi

java - 非阻塞文件缓存(BitmapLruCache)实现?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:09 24 4
gpt4 key购买 nike

我正在尝试为 ImageLoader 创建一个简单的演示Android Volley Framework 的功能.构造函数如下:

public ImageLoader(RequestQueue queue, ImageCache imageCache)

问题出在 ImageCache 上。它的 JavaDoc 声明:

Simple cache adapter interface. If provided to the ImageLoader, it will be used as an L1 cache before dispatch to Volley. Implementations must not block. Implementation with an LruCache is recommended.

  1. 在此上下文中,“实现不得阻塞”到底是什么意思?
  2. 是否有非阻塞文件缓存的示例(即使是非 android 但“纯”java)我可以用来自学如何将现有文件缓存转换为非阻塞?
  3. 如果不存在这样的东西 - 使用我现有的实现可能会有什么负面影响(只是从文件中读取):

    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;

最佳答案

What exactly the 'Implementations must not block' in this context means?

在您的情况下,您不能执行磁盘 I/O。

这是一级 (L1) 缓存,这意味着它旨在在几微秒内返回,而不是几毫秒或几秒。这就是为什么他们提倡LruCache,这是一种内存缓存。

Is there an example of non-blocking file cache (even non-android but "pure" java) which I can use to educate my self how to convert my existing file cache to be non-blocking?

L1 缓存不应该是文件缓存。

what may be the negative implications of using my existing implementation which is (just the reading from the file)

L1 缓存不应该是文件缓存。

Volley 已经有一个集成的 L2 文件缓存,名为 DiskBasedCache,用于缓存 HTTP 响应。如果愿意,您可以用自己的 Cache 实现替换 DiskBasedCache,并在创建 RequestQueue 时提供它。

关于java - 非阻塞文件缓存(BitmapLruCache)实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16678901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com