I. Introdução
ÉGlide
um excelente framework de carregamento de imagens. Vale a pena gravar sua ideia de cache de imagens. Ela é simplesmente gravada aqui, e a parte do código-fonte não está envolvida.
2. Cache de ideias
Primeiro Glide
, o cache é dividido em quatro partes: cache ativo, cache de memória, cache de disco de formato de dados (ou seja, todas as imagens cortadas, compactadas e convertidas também são salvas), cache de disco de imagem original. Os dois últimos são seus próprios nomes, você pode chamá-los de qualquer coisa. A explicação é a seguinte:
- Cache ativo: use principalmente um
HashMap
cache para armazenar em cache todas as imagens em uso - Cache de memória: a imagem recuperada é armazenada em cache pelo algoritmo LRU
- Cache de disco de formato de dados: salve todas as imagens cortadas, compactadas e convertidas na imagem, evitando assim a reconversão
- Cache de disco de imagem original: salve imagens carregadas de outros locais no disco
O acima é o cache de quatro camadas, no qual o cache ativo e o cache de memória são armazenados na memória. Após o término do programa, a imagem é destruída. O cache de disco de formato de dados e o cache de disco de imagem original são salvos no disco e não serão destruídos quando o aplicativo for fechado. O processo de operação é carregar a imagem do cache ativo primeiro, caso contrário, carregá-la do cache de memória, se carregada, remover a imagem do cache de memória e depois adicioná-la ao cache ativo, caso contrário, remover a imagem dos dados. Formate o cache de disco, se houver, adicione-o ao cache ativo e exiba-o, caso contrário, carregue-o do cache de disco de imagem original, se houver, adicione-o ao cache ativo, se não, baixe-o da rede ou de outro local carregado. Se o download for bem-sucedido, ele será exibido e salvo no cache de disco e no cache ativo.
O acima é o processo de carregamento, então como funciona o processo de reciclagem? Primeiro, quando a imagem no cache ativo não for mais usada, a imagem será movida para o cache de memória e, quando os dados do cache de memória excederem o limite, eles serão removidos. Observe aqui que um Bitmap pode ser usado em vários lugares, portanto, sua referência deve ser calculada e movida para o cache de memória quando não houver referência.
Por que dividir o cache ativo, pois o algoritmo LRU terá a possibilidade de remover imagens. Se houver muitas imagens carregadas, haverá o risco de remover as imagens em uso. Portanto, use um sozinho Map
para salvar a imagem em uso.
Além disso, o valor KEY é calculado para cada imagem, e uma classe separada é usada para salvá-la, e a classe armazena várias informações da imagem. Por exemplo, o diagrama de círculo, diagrama quadrado, diagrama difuso, etc. da mesma imagem, cada estilo é uma CHAVE.