O que é LeastRecentlyUsedCacheEvictor no ExoPlayer?

Sep 14 2020

Estou muito confuso com o exoplayer e sua documentação, eles explicaram tudo em poucas palavras. Alguém pode me dizer o que exatamente é menosRecentlyUsedCacheEvictor e como funciona? caso de uso e métodos?

Respostas

1 Sdghasemi Sep 14 2020 at 16:21

O cache de vídeo ExoPlayer usa uma instância CacheEvictor para informar à biblioteca quando excluir os arquivos em cache. LeastRecentlyUsedCacheEvictorcomo o nome representa, declara essa política em um pedido usado pelo menos recentemente.

Supondo que você assistiu aos vídeos A, B, C, A (novamente) e D (a ordem é importante) e atingiu a capacidade máxima de cache passada no LeastRecentlyUsedCacheEvictorconstrutor. A instância do evictor lista os usos do cache e localiza o vídeo B como o menos usado recentemente e o exclui para liberar espaço.

Aqui está um exemplo de uso simples:

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