Précharger des images multiples avec Glide
Nous essayons de précharger les images dans la mémoire cache pour les charger plus tard (les images se trouvent dans le Actifs dossier de l'application)
Ce que nous avons essayé:
Glide.with(this)
.load(pictureUri)
.diskCacheStrategy(DiskCacheStrategy.ALL);
Glide.with(this)
.load(picture_uri)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.preload();
La question: les Images sont mises en cache uniquement lorsque nous essayons de charge/afficher:
Elles doivent être chargées dans la mémoire avant de sorte qu'ils apparaissent plus rapidement.
Glide.with(this)
.load(picture_uri)
.into(imageView);
Nous avons également essayé d'utiliser un GlideModule pour augmenter la CacheMemory taille:
public class GlideModule implements com.bumptech.glide.module.GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder
builder.setMemoryCache(new LruResourceCache(100000));
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
Dans le manifeste:
<meta-data android:name=".GlideModule" android:value="GlideModule"/>
Rien n'est travaillé jusqu'à présent. Une idée?
Nous d'essayer d'utiliser un invisible 1 dp imageView, mais le résultat est le même:
for(Drawing drawing: getDrawingsForTab(tab)){
Glide.with(this)
.load(drawing.getImage().toUri())
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(mPreloadCacheIv);
for(Picture picture : getPictures()){
Glide.with(this)
.load(picture.getPicture().toUri())
.dontAnimate()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(mPreloadCacheIv);
}
}
- Peut-être que vous pourriez déjà charger puis dans un invisible imageView lorsque cela est approprié.
- J'ai mis à jour la question avec votre avis. Ça ne marche toujours pas. Glisser la documentation n'est pas très clair sur ce sujet :/
- Je n'ai pas utilisé de Glisse. Si vos images sont actifs, je ne suis pas certain pourquoi vous configurez
diskCacheStrategy()
, car les images sont déjà sur le disque. Êtes-vous sûr que votre mémoire cache est d'être reconnue par les Glisse? - De l'actif les images prennent trop de temps à charger dans l'ImageView. Une fois qu'ils ont été une fois chargé en mémoire, c'est immédiat. Ce que je suis en train de réaliser est le deuxième comportement pour la première fois l'image chargée. Ai-je un moyen de savoir dans quel état est la mémoire cache ?
Vous devez vous connecter pour publier un commentaire.
La meilleure option est de gérer le cache-même, il vous donne plus de contrôle & devrait être facile comme vous le savez déjà ce sont des bitmaps à être chargé.
Première: Installation d'un LruCache
Deuxième: Chargement d'une image bitmap dans le LruCache
Troisième: Utiliser la mise en cache des bitmaps
(int) (Runtime.getRuntime().maxMemory() / (1024 * 4))
si vous avez besoin d'un cache plus grand que cela, vous devriez essayer une autre approche architecturale.android.util.LruCache<K, V>
Utiliser le code suivant pour mettre en cache les images sans les afficher
à l'aide de la
downloadOnly
méthode si vous êtes à la recherche pour télécharger des images à partir du web et de les stocker dans le diskCache:à l'aide de
preload
méthode si vous souhaitez charger dans la Mémoire Cache.Vous pouvez par la suite utiliser la mise en cache des images à l'aide
GlideApp.with(yourFragment).load(yourUrl).fitCenter().asBitmap().preload();
pour fixer le cache de missies.Glide version 4.6.1
//5.après ces travaux, charger une image à partir de diskCache,il suffit de 10ms。