Princípio de cache do Glide

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 HashMapcache 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 Mappara 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.

Guess you like

Origin blog.csdn.net/Mr_Tony/article/details/123286422