【发布时间】:2020-09-14 17:21:00
【问题描述】:
我对 exoplayer 和他们的文档感到很困惑,他们很简短地解释了一切。 谁能告诉我leastRecentlyUsedCacheEvictor到底是什么以及它是如何工作的?用例和方法?
【问题讨论】:
标签: android exoplayer2.x
我对 exoplayer 和他们的文档感到很困惑,他们很简短地解释了一切。 谁能告诉我leastRecentlyUsedCacheEvictor到底是什么以及它是如何工作的?用例和方法?
【问题讨论】:
标签: android exoplayer2.x
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)));
}
}
【讨论】:
CacheEvictors 用于构建 ExoPlayer 缓存实例。该库防止使用多个缓存实例来访问同一个文件夹。因此,您应该为您声明的每个缓存文件夹使用单例类。