Fresco: Platzhalter verursachen Speicherverlust

Erstellt am 13. Jan. 2016  ·  4Kommentare  ·  Quelle: facebook/fresco

mein code in xml ist

        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="0dp"
            fresco:placeholderImage="@drawable/thisone_placeholder"
            fresco:actualImageScaleType="fitCenter"
            android:layout_height="wrap_content"
            fresco:viewAspectRatio="0.5625"
            android:layout_weight="1" />

thisone_placeholder_left ist ein jpg, wenn ich das verwende, erhöht sich der Speicher schnell.
und nachdem ich es bewegt habe, wird es normal.

needs-details

Hilfreichster Kommentar

Klein oder nicht, ein Leck ist ein Leck.

Alle 4 Kommentare

Fresco macht nichts Besonderes mit Platzhalterbildern - was auch immer Sie angeben, es wird über Resources.getDrawable (https://github.com/facebook/fresco/blob/94ce1dee0733300fe2c029382e0c454169db81b8/drawee/src/main/java/ com/facebook/drawee/view/GenericDraweeView.java#L246).

Könnten Sie überprüfen, ob der Speicher wächst, weil das Bild thisone_placeholder so groß ist oder weil mehrere Instanzen von Bitmaps erstellt werden (eine pro Drawable)? Sie können das in Heapdump überprüfen.

Ich bestätige dies.

Ich hatte eine Rasteransicht mit mehreren Bildern mit einem großen JPEG als Platzhalter (zum Testen), und die App stürzte aufgrund von Speichermangel ab. Ich entfernte den Platzhalter und tat den alten Weg, überprüfte, ob es ein Bild gibt, sonst lud ich den Platzhalter als tatsächliches Bild, und das Leck wurde gestoppt.

Hier ist die Speicherzuweisungsanalyse von Android Studio: 2016.02.10_21.04.zip

Platzhalter sind als kleine, schnell geladene Bilder gedacht. Wenn Sie dort ein großes Bild verwenden müssen, sollten Sie stattdessen eine Anfrage mit niedriger Auflösung verwenden.

Klein oder nicht, ein Leck ist ein Leck.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen