2016-07-22 12 views
0

Ich benutze Android gestaffelt Raster, um Zeilen von Bildern zu präsentieren (fast alle von ihnen haben die gleiche Größe). Es zeigt fast 15 Bilder pro Bildschirmhöhe. Ohne Bilder (nur Platzhalter) funktioniert das Scrollen gut, aber mit ihnen wird es luggy. Ich benutze pause \ resume Technik, aber es hilft nicht viel. Auch habe ich es bis zum Backbone festgenagelt, um einige zusätzliche Daten zu vermeiden, die durchsickern können.Wie kann GC Scripts mit Scroll Recycler mit Picasso reduziert werden?

Das einzige Problem, das ziemlich häufig auftritt, ist GC-Anruf. Scheint, dass dies die Wurzel meines Problems ist. Ich nehme an, dass es nicht verwendete Bitmap gesammelt hat, da der Viewholder hier wiederverwendbar ist.

Haben Sie Ideen, wie Sie die Häufigkeit von GC-Anrufen für einen solchen Fall verringern können?

+0

genau verlieren Sie die Bilder beim Scrollen, aber sie kommen nach einer gewissen Verzögerung zurück, wenn Sie zu einem Element ohne Aktivitätsübergang zurückkehren. – nobalG

+0

Die Leiche ist Picassos Cache-Mechanismus, der versucht, die Bilder zu laden. Implementieren Sie die richtige Caching nach Ihren Bedürfnissen und entfernen Sie die Fade-Animation, hilft es mit den Idioten – Kushan

+0

Lagging ist fast sicher kein Problem in Picasso. Wenn Sie Ihren Code posten, kann Ihnen vielleicht jemand einen spezifischen Rat geben. –

Antwort

0

Sie können GC nicht steuern. Um jedoch die Anzahl der GC-Aufrufe zu reduzieren, können Sie in Picasso die richtige Zwischenspeicherung des Arbeitsspeichers überprüfen.

Stellen Sie außerdem sicher, dass die Bilder nicht sehr groß sind, sie sollten ungefähr die gleiche Größe wie Ihre Ansicht haben. Sie können auch die Verwendung von OKHTTP zur Implementierung einer Disc-Caching-Lösung prüfen.

Bitte schauen Sie in die benutzerdefinierte Picasso-Implementierung, die ich gemacht habe, um sowohl die Speicher- als auch die Disc-Cache-Größe zu steuern. Außerdem wurde eine Methode erstellt, mit der Sie beide Caches löschen können, wenn es dazu kommt. (Siehe das nicht akzeptierte Antwort für meine Antwort aktualisiert)

Limiting Square Picasso's cache size to 60MB max

jedoch nach vieler Forschung, ich festgestellt, dass picasso ist nicht sehr effizient mit dem Gedächtnis, und ich bin jetzt mit Fresko. Es ist viel glatter und ist viel besser als Picasso in Bezug auf den Speicherbedarf von dem, was ich gesehen habe.