【问题标题】:What is LeastRecentlyUsedCacheEvictor in ExoPlayer?ExoPlayer 中的 LeastRecentlyUsedCacheEvictor 是什么?
【发布时间】:2020-09-14 17:21:00
【问题描述】:

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

【问题讨论】:

    标签: android exoplayer2.x


    【解决方案1】:

    ExoPlayer 视频缓存使用CacheEvictor 实例来告诉库何时删除缓存文件。顾名思义,LeastRecentlyUsedCacheEvictor 以最近最少使用的顺序声明该策略。

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

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

    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)));
        }
    }
    

    【讨论】:

    • 如果我在具有多个 playerView 的 exoplayer 中使用 LeastRecentlyUsedCacheEvictor 那么我应该创建这个单例吗?
    • CacheEvictors 用于构建 ExoPlayer 缓存实例。该库防止使用多个缓存实例来访问同一个文件夹。因此,您应该为您声明的每个缓存文件夹使用单例类。
    猜你喜欢
    • 1970-01-01
    • 2022-01-05
    • 2021-08-06
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多