ExoPlayer'da LeastRecentlyUsedCacheEvictor nedir?

Sep 14 2020

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

1 Sdghasemi Sep 14 2020 at 16:21

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