2016-03-10 1 views
1

J'utilise Picasso pour le chargement d'image, je l'utilise avec NetworkPolicy.OFFLINE, mais à un moment je veux mettre à jour l'image à partir d'Internet et je suis en train avecAndroid Picasso image claire à partir du disque et cache

Picasso.with(context).invalidate(url); 
Picasso.with(context).load(url).memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).networkPolicy(NetworkPolicy.NO_CACHE); 

Mais l'image est toujours prise à partir du disque, seul le cache est invalidé.

Répondre

1

Utilisez ceci:

Picasso.with(context).load(url).memoryPolicy(MemoryPolicy.NO_CACHE).into(image); 
+0

quelle est la différence, ".into()"? Je veux invalider le cache au démarrage de l'application et je n'ai toujours pas de vues à charger. – SpyZip

0

Vous pouvez effacer le cache à l'aide du code ci-dessous programmation. Vous pouvez utiliser ce code avant d'avoir besoin d'images de l'API. Si vous voulez que PICASSO ne cache jamais les images, vous pouvez utiliser du code partagé par waseem. mais si vous en avez besoin pour mettre en cache mais seulement parfois vous devez obtenir des images de l'API, vous pouvez effacer le cache.

public static void trimCache(Context context) { 
     try { 
     File dir = context.getCacheDir(); 
     if (dir != null && dir.isDirectory()) { 
      deleteDir(dir); 
     } 
     } catch (Exception e) { 
     // TODO: handle exception 
     } 
    } 


    public static boolean deleteDir(File dir) { 
    if (dir != null && dir.isDirectory()) { 
    String[] children = dir.list(); 
    for (int i = 0; i < children.length; i++) { 
     boolean success = deleteDir(new File(dir, children[i])); 
     if (!success) { 
      return false; 
     } 
    } 
    return dir.delete(); 
    } 
    else { 
    return false; 
    } 
+0

Cela va effacer le cache de toutes les images, pas seulement un? – SpyZip

+0

oui il va effacer tout le cache. –

+0

J'utilise pour effacer tout le cache public class PicassoTools { public static void clearCache (Picasso p) { p.cache.clear(); } } – SpyZip

0

Alors je l'appelais quand je n'avais pas encore de vues disponibles. La clé consiste à appeler la méthode .into() qui déclenche l'écrasement du cache. Donc j'utilise seulement ceci:

Picasso.with(context).load(url).into(new ImageView(context));