2016-12-07 4 views
0

Ich habe eine BackgroundImageActivity, die Hintergrundbild mit Picasso laden. Aber wenn ich zurück nach Hause gehe (onStop() in BackgroundImageActivity aufgerufen) und gehen Sie in eine andere Instanz dieser Aktivität, die ein anderes Hintergrundbild laden soll, aber zuerst 2 Sekunden, zeigt es immer noch das Bild von früheren BackgroundImageActivity. Ist das eine Art Cache?Wie lösche ich mit Picasso geladene Bilder auf Android?

Wie kann ich dieses Bild löschen, so dass, wenn ich in eine neue Instanz von BackgroundImageActivity gehe, ich das Bild von vorherigem nicht sehe?

public class BackgroundImageActivity extends Activity { 

    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     initBackground(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     Picasso.invalidate(imageUrl, getApplicationContext()); 
    } 

    private void initBackground() { 
     ... 
    } 

    private void setBg(final String imageUrl, final int bg) { 

     this.imageUrl = imageUrl; 

     final RequestCreator picassoRequest = Picasso.load(imageUrl, bg).memoryPolicy(MemoryPolicy.NO_CACHE); 

     targetReference = new Target() { 
      @Override 
      public void onBitmapLoaded(final Bitmap bitmap, final Picasso.LoadedFrom from) { 
       ... 
      } 

      @Override 
      public void onBitmapFailed(final Drawable errorDrawable) { 
       ... 
      } 

      @Override 
      public void onPrepareLoad(final Drawable placeHolderDrawable) { 
       ... 
      } 
     }; 

     picassoRequest.placeholder(bg).error(bg).into(targetReference); 
    } 


} 

Vielen Dank !!!

Antwort

0

Verwenden Sie diesen Code, während Sie das Bild laden.

Picasso.with(getContext()).load(data.get(pos).getFeed_thumb_image()).memoryPolicy(MemoryPolicy.NO_CACHE).into(image); 

picasso Bild zu ImageView direkt ohne Zwischenspeicherung im Hintergrund.Dies machen App geringes Gewicht auch.

Verwandte Themen