2017-08-18 3 views
0

Im mit großen Bildern PicassoLaden große Bilder mit Picasso

public static final int MAX_WIDTH= 500; 
public static final int MAX_HEIGHT= 500; 

Picasso.with(imageView.getContext()) 
       .load(Utils.imagePath(list.get(position).getImage())) 
       .resize(MAX_WIDTH,MAX_HEIGHT) 
       .onlyScaleDown() 
       .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE) 
       .into(imageView); 

zu laden versucht, aber ich bin immer Fatal Exception: java.lang.OutOfMemoryError für obigen Code, die Bilder, die ich zu laden bin versucht, genau wie die Bilder unten

enter image description here

Sollte ich das Bild von Back-End-Größe oder gibt es etwas, das ich dies zu vermeiden tun kann? Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Haben Sie dies in Ihrem Adapter (scheint zu sein), kann Bild laden viele Male aufgerufen werden, wegen des Adapters mehrere Bindviews.

So sind Sie sicher

.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE) 

?

Sie sollten eine Speicherrichtlinie, möglicherweise mit kurzer Speichergröße oder einem kurzen Timeout definieren, wenn Sie nicht zu viele Daten speichern möchten.

0

Versuchen Sie große Heap. Legen Sie android:largeheap="true" in Ihrer manifest Datei

<application 
    android:name=".MyApplication" 
    ..... 
    ..... 
    android:largeHeap="true" 
    ..... 
    ..... 
    android:theme="@style/AppTheme" > 
</application> 

Auch ist es besser, entweder .fit() zu verwenden.

.fit() - Dies führt zu einer verzögerten Ausführung der Anforderung, bis ImageView angelegt wurde.

+0

Markieren Sie es als akzeptierte Antwort, wenn es Ihnen wirklich geholfen hat. Es wird anderen helfen –