web-dev-qa-db-fra.com

Comment mettre en cache des images dans Glide

Lorsque j'utilise glide, certaines images ne se chargent pas. Comment puis-je le stocker dans le cache, ou n'importe où, quand j'utiliserai l'application pour charger toutes mes images. Exemple d'image de mon problème:

screenshot

Mon code:

.Java

             home_ib7_monster_truck = 
            (ImageButton)findViewById(R.id.home_ib7_monster_truck);
             Glide.with(Home.this)
            .load(R.drawable.moviep_monster_truck)
            .centerCrop()
            .fitCenter()
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(home_ib7_monster_truck);

.xml

<ImageButton
            Android:id="@+id/home_ib7_monster_truck"
            Android:layout_width="98dp"
            Android:layout_height="155dp"
            Android:layout_alignStart="@+id/home_ib4_keplers_dream"
            Android:layout_below="@+id/home_ib4_keplers_dream"
            Android:layout_marginTop="14dp"
            Android:background="@Android:color/transparent"
            Android:scaleType="fitCenter" />

J'utilise glide parce que j'ai vu que c'est facile à utiliser et que je peux charger des images à partir de dessins. Et le principal problème est qu'il le fasse de manière aléatoire, donc je veux dire qu'une fois que toutes mes images ne sont pas, une autre fois toutes les images peuvent voir, et je ne sais pas pourquoi. J'utilise des images de taille 980x1550, 'casuse, je ne veux pas que mes images soient pleines de pixels, et quand j'utilise une autre méthode comme src dans le .xml, j'ai une erreur de mémoire. Donc, n'importe qui connaît un soluton, comment puis-je mettre en cache les images?

EDIT: Avec ces (.diskCacheStrategy (DiskCacheStrategy.RESULT; diskCacheStrategy (DiskCacheStrategy.Source) j'ai le même problème. Je l'obtiens de LogCat: Throwing OutOfMemoryError "Impossible d'allouer une allocation d'octets 1519012 avec 230112 gratuit octets et 224 Ko jusqu'à MOO "et je ne sais pas comment, quand il doit être mis en cache.

5
Katona Tamas

Veuillez lire la description ci-dessous selon la documentation officielle: https://futurestud.io/tutorials/glide-caching-basics

enter image description here

enter image description here

6
Saurabh Mistry

Voici un scénario courant que vous souhaitez charger l'image à partir du cache et télécharger les nouvelles données niquement si une nouvelle image existe, vous devez avoir un moyen de savoir si l'image est mise à jour, par exemple une variable appelé imageTimeStamp contenant la dernière fois que l'image a été mise à jour.

            Glide.with(context).load(url).apply(new RequestOptions()
                .placeholder(R.drawable.defultIcon)
                .signature(new ObjectKey(image.getPPTimeStamp()))) // here you add some value , if the next time you add the same value then it will load from cache otherwise if you put new value you will download , then save in cache
                .into(icon);
3
Nour Ahmed

Glide mettra toutes les ressources d'image dans le cache mémoire par défaut. Ainsi, un appel spécifique .skipMemoryCache( false ) n'est pas nécessaire.

Astuce: attention au fait que si vous faites une requête initiale à la même URL sans la .skipMemoryCache( true ) puis avec la méthode , la ressource sera mise en cache en mémoire. Assurez-vous que vous êtes cohérent dans tous les appels vers la même ressource, lorsque vous souhaitez ajuster le comportement de mise en cache!

Référence: https://futurestud.io/tutorials/glide-caching-basics

0
Abhishek kumar