Préchargez les images dans la mémoire / disque avec Android Picasso

Puis-je télécharger des images avec Picasso avant de les afficher? Je veux d'abord mettre en cache les images.

Exemple de scénario: l'utilisateur clique sur le bouton, voit la barre de progression et, lorsque les images ont fini de charger l'utilisateur, voir les images à l'écran.

  • Serializing Android Bundle pour le stockage réseau et / ou persistant?
  • Quelle est la façon la plus appropriée de stocker les paramètres utilisateur dans une application Android
  • La barre d'outils Android Lollipop entre le tiroir d'ouverture / fermeture et le bouton de retour
  • Comment animer un chemin sur une toile - Android
  • Comment vérifier l'extension du fichier dans Android
  • L'emplacement de android sdk n'a pas été configuré dans les préférences dans Mac OS?
  • J'ai essayé de charger des images avec la méthode "get", mais cela n'a pas caché les images.

    Thread thread = new Thread() { @Override public void run() { try { Picasso picasso = PicassoOwnCache.with(getApplicationContext()); RequestCreator picassoRequest; for (String imgUrl : imagesUrls) { picassoRequest = picasso.load(imgUrl); picassoRequest.get(); } } catch (Exception e) { e.printStackTrace(); } } }; thread.start(); 

    C'est ma classe de singleton de Picasso

     public class PicassoOwnCache { static Picasso singleton = null; static Cache cache = null; public static Picasso with(int cacheSize, Context context) { if (singleton == null) { int maxSize = calculateMemoryCacheSize(context); cache = new LruCache(cacheSize <= maxSize ? cacheSize : maxSize); singleton = new Picasso.Builder(context) .memoryCache(cache) .build(); } return singleton; } public static Picasso with(Context context) { if (singleton == null) { cache = new LruCache(calculateMemoryCacheSize(context)); singleton = new Picasso.Builder(context) .memoryCache(cache) .build(); } return singleton; } static int calculateMemoryCacheSize(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); boolean largeHeap = (context.getApplicationInfo().flags & FLAG_LARGE_HEAP) != 0; int memoryClass = am.getMemoryClass(); if (largeHeap && Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { memoryClass = ActivityManagerHoneycomb.getLargeMemoryClass(am); } return 1024 * 1024 * memoryClass / 10;//7; } @TargetApi(Build.VERSION_CODES.HONEYCOMB) private static class ActivityManagerHoneycomb { static int getLargeMemoryClass(ActivityManager activityManager) { return activityManager.getLargeMemoryClass(); } } } 

    Image suivante (mise en cache) à l'utilisateur.

     Picasso picasso = PicassoOwnCache.with(getApplicationContext()); picasso.setDebugging(true) ; RequestCreator picassoRequest; picassoRequest = picasso.load(imgUrl); picassoRequest .placeholder(R.drawable.loading_logo) .error(R.drawable.no_internet) .fit() // I tries also without fit() .into(holder.getImageView()); 

    Malheureusement, cela ne fonctionne pas. Merci pour vos suggestions!

  • Ajouter de l'audio à la vidéo dans Android
  • Pkpass sur Android
  • Comment ajouter le niveau N du menu extensible dans NavigationView android?
  • Comment créer un égaliseur pour Android
  • Exception de jeton incorrect - Impossible d'ajouter une fenêtre (Marshmallow - Barre d'outils flottante)
  • Y a-t-il quelque chose de plus rapide que Jsoup pour le raclage HTML?
  • 2 Solutions collect form web for “Préchargez les images dans la mémoire / disque avec Android Picasso”

    Comme dit dnkoutso, vous venez d'utiliser:

    Fetch ()

    Qui est construit dans Picasso! Veuillez confirmer le commentaire de dnkoutso.


    PS Je suppose que ce que vous demandez est "comment puis-je créer des images Picasso PRE-LOAD?"

    Notez que Picasso gère totalement et totalement toute la mise en cache des images – sans effort supplémentaire de vous – c'est le but de Picasso et pourquoi vous l'utilisez – c'est la raison d'être de Picasso . Donc, vous n'avez pas à vous en préoccuper.

    Encore une fois, si vous parlez avant le chargement ou disons "warm-up" , faites exactement ce que dnkoutso a dit.

    (En passant, tout cela se résume simplement à: "comment les choses sont bonnes dans les ListViews longues des images". Nous avons réellement trouvé que Picasso est si lisse, vous n'avez même pas besoin de vous soucier, en général, de Une phase d'échauffement dans la plupart des applications. En effet, même des concepts critiques comme celui-ci …

    http://lucasr.org/2012/04/05/performance-tips-for-androids-listview/

    Note – cet article célèbre http://www.programmingmobile.com/2012/03/buttery-smooth-list-scrolling-in.html a disparu du Web ..

    … vraiment Picasso est tellement facile à utiliser, vous avez vraiment besoin de déranger la gestion "Listman" à l'ancienne. En bref, vous avez très rarement besoin de s'inquiéter de "warm-up", nous l'avons trouvé. J'espère que cela aide.)

    Vous pouvez récupérer des images avant d'afficher. Une fois qu'il est chargé, vous pouvez le charger dans imageView. Lorsque vous appelez Picasso # load () la deuxième fois, l'image ne sera plus téléchargée. Cela viendra du cache.

     startProgress(); // handle showing progress view somehow Picasso.with(getActivity()).load(imageUrl).fetch(new Callback() { @Override public void onSuccess() { Picasso.with(getActivity()).load(imageUrl).into(imgViewMedia); stopProgress(); // handle stopping progress view somehow } @Override public void onError() { } }); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.