2016-04-24 15 views
1

Ich habe ein 3MB Bild mit einer Auflösung von 1920 * 1080 , wenn ich versuche, das Bild auf einem reales Gerät zu laden (441 PPI & 5,5-Zoll-Bildschirm: Oneplus2 Device) es funktioniert gut. Aber wenn ich diesen Code auf einem Emulator-Gerät (1 GB Ram | 441 PPI Dichte | 5,5 Zoll Bildschirm) laufen lassen, dann bekomme ich die OutOfMemoryError. Ich lade das Bild über XML in den Hintergrund meines RelativeLAyout.OutOfMemoryError in Android Emulator Geräten

Ich überprüfte die Devloper.android für das Laden der Bitmaps effizient, aber es war mir nicht viel klar. Also können Sie mir bitte helfen.

+0

Satz largeHeap in der Anwendung Tag in AndroidManifest lesen und lesen dies: http://developer.android.com/intl/vi/training/displaying-bitmaps/load-bitmap.html –

+0

Die Bitmap benötigt die Bilddaten in unkomprimierter Form und wird daher mindestens 8MB groß sein. Die 3 MB im Dateisystem sind irrelevant. – Henry

+0

Wenn ich den großen Haufen zuteilen werde, dann wird es nicht die clevere Idee sein, da Apps großen Speicher verbrauchen werden und es auf dem Gerät eine langsame Leistung machen und anschließend abstürzen wird –

Antwort

1

Es passiert auf dem Gerät zu Gerät hatte ich ähnliches Problem. Alles funktionierte gut auf meinem Sony Xperia C (1GB RAM), aber es gab OOM in Xiomi Redmi (2GB RAM).

Dann habe ich alle Art von schmerzhaften Forschung, wie zu load Bitmap efficiently und am Ende mit Glide Bibliothek und seitdem habe ich nie gesehen OOM in meinem Projekt.

Integration ist einfach einfach Jar in Ihrem Projekt und laden Bitmap jeder Größe einfach hinzufügen: -

ImageView imageView = (ImageView) findViewById(R.id.my_image_view); 

    Glide.with(this).load("url to 3 MB image").into(imageView); 

Sie können alle über gleiten hier https://futurestud.io/blog/glide-getting-started

Verwandte Themen