返回介绍

2. 使用方法

发布于 2024-12-23 21:09:29 字数 1264 浏览 0 评论 0 收藏 0

当成一个 Map 用就可以了,只不过实现了 LRU 缓存策略

使用的时候记住几点即可:

  • 1.(必填)你需要提供一个缓存容量作为构造参数。
  • 2.(必填) 覆写 sizeOf 方法 ,自定义设计一条数据放进来的容量计算,如果不覆写就无法预知数据的容量,不能保证缓存容量限定在最大容量以内。
  • 3.(选填) 覆写 entryRemoved 方法 ,你可以知道最少使用的缓存被清除时的数据( evicted, key, oldValue, newVaule )。
  • 4.(记住)LruCache 是线程安全的,在内部的 get、put、remove 包括 trimToSize 都是安全的(因为都上锁了)。
  • 5.(选填) 还有就是覆写 create 方法 。

一般做到 1、2、3、4 就足够了,5 可以无视

以下是 一个 LruCache 实现 Bitmap 小缓存的案例 , entryRemoved 里的自定义逻辑可以无视,想看的可以去到我的我的展示 demo 里的看自定义 entryRemoved 逻辑。

private static final float ONE_MIB = 1024 * 1024;
// 7MB
private static final int CACHE_SIZE = (int) (7 * ONE_MIB);
private LruCache<String, Bitmap> bitmapCache;
this.bitmapCache = new LruCache<String, Bitmap>(CACHE_SIZE) {
  protected int sizeOf(String key, Bitmap value) {
    return value.getByteCount();
  }

  @Override
  protected void entryRemoved(boolean evicted, String key, Bitmap oldValue, Bitmap newValue) {
    ...
  }
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文