ExoPlayer 中的 LeastRecentlyUsedCacheEvictor 是什么?

What is LeastRecentlyUsedCacheEvictor in ExoPlayer?

我对 exoplayer 和他们的文档很困惑,他们已经很简短地解释了一切。 谁能告诉我 leastRecentlyUsedCacheEvictor 究竟是什么以及它是如何工作的?用例和方法?

ExoPlayer 视频缓存使用 CacheEvictor instance to tell the library when to delete cached files. LeastRecentlyUsedCacheEvictor 正如其名称所代表的那样声明该策略以最近最少使用的顺序排列。

假设您已经观看了视频 A、B、C、A(再次)和 D(顺序很重要)并且达到了 LeastRecentlyUsedCacheEvictor 构造函数中传递的最大缓存容量。逐出器实例列出了缓存使用情况,发现视频 B 是最近最少使用的视频 B,并将其删除以释放 space.

这是一个简单的用法示例:

public class VideoCacheSingleton {
    private static final int MAX_VIDEO_CACHE_SIZE_IN_BYTES = 200 * 1024 * 1024;  // 200MB

    private static Cache sInstance;

    public static Cache getInstance(Context context) {
        if (sInstance != null) return sInstance;
        else return sInstance = new SimpleCache(new File(context.getCacheDir(), "video"), new LeastRecentlyUsedCacheEvictor(MAX_VIDEO_CACHE_SIZE_IN_BYTES), new ExoDatabaseProvider(context)));
    }
}