ExoPlayer'da LeastRecentlyUsedCacheEvictor nedir?
Exoplayer ve belgeleri ile çok kafam karıştı, Her şeyi çok kısa bir şekilde açıkladılar. Lütfen birisi bana en azRecentlyUsedCacheEvictor'ın tam olarak ne olduğunu ve nasıl çalıştığını söyleyebilir mi? kullanım durumu ve yöntemleri?
Yanıtlar
ExoPlayer video önbelleği , kitaplığa önbelleğe alınmış dosyaların ne zaman silineceğini bildirmek için bir CacheEvictor örneği kullanır . LeastRecentlyUsedCacheEvictorismin temsil ettiği gibi, bu politikayı en son kullanılan sırada beyan eder.
A, B, C, A (tekrar) ve D (sipariş önemlidir) videolarını izlediğinizi ve LeastRecentlyUsedCacheEvictoryapıcıda geçirilen maksimum önbellek kapasitesine ulaştığınızı varsayarsak . Evictor örneği, önbellek kullanımlarını listeler ve en son kullanılan video B'yi bulur ve alanı boşaltmak için siler.
İşte basit bir kullanım örneği:
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)));
}
}