2016-06-05 8 views
1

Ich entwickle ein kleines Tamagotchi für ein Schulprojekt und ich habe große Probleme mit der Menge an Speicher, die die App verwendet. Zuerst hatte ich der App 200MB zugewiesen und nach ein wenig Nachforschung bekam ich eine einfache Lösung, um es auf 50MB zu reduzieren, indem ich den ziehbaren Ordner in drawable-nodpi umbenannte. Aber das ist immer noch viel zu viel. Bei der Untersuchung des Problems bin ich mir sicher, dass es etwas mit meinem Layout und den UI-Elementen zu tun hat, da ich meinen gesamten Code gelöscht habe und meine App nur mit dem Layout gestartet habe und die Speicherbelegung überhaupt nicht gesunken ist.Hohe Speicherverbrauch in Android-Anwendung (50MB)

Hier können Sie mein Layout sehen: App-Layout and Memory-Usage

Die Bildgrößen sind im Durchschnitt etwa 30kb, und wenn ich die maximale Größe möglich, Bilder im Speicher zu berechnen habe ich um 1,5 MB.

Woher kommt also die gesamte Erinnerung? Wie ist das überhaupt möglich?

Wenn Sie selbst die App sehen Sie das Projekt von Github erhalten: https://github.com/kruben95/TamaStudent

Ich würde mich freuen, wenn mir jemand helfen kann oder ein paar Tipps geben mir.

+0

Vermeiden high-res Bilder (~ 1920x1080p) finden. Sie essen Erinnerungen wie verrückt. – Vucko

Antwort

3

ich heruntergeladen Ihr Projekt, und hier sind einige Vorschläge:

1) Bilder große Auflösung sind, auch wenn auf der Festplatte nehmen sie 30-40 kb - im Speicher sind sie Bitmap und Bitmap viele Speicher brauchen, für Beispiel Körperteil - 1200x1980 Pixel mit 4 Bytes pro Pixel das sind 9,5 Megabyte im Speicher !! ?? jetzt, nachdem diese Bitmap erhalten wurde, muss sie auch skaliert werden - das ist zusätzlicher Speicher, und wie Sie sehen, haben Sie mehr als 10 Megabyte pro nur einem Bild !! Das ist extrem HOCH.

2) Bilder niedriger Auflösung machen. keine Notwendigkeit, sie so hohe Res anzuzeigen.

3) aus Bildern entfernen unsichtbare Teile - wie ich sehe sehr große Teile sind klar , aber es braucht Speicher!

4) versuchen, einige Bilder programmatisch wie Kreise usw.

5) in Code zu machen - für Ansicht nicht verwenden alpha wenn Sie Hintergrund tun müssen, um dieses Alpha direkt in Farbe gesetzt: # 00FFFFFF - Hier ist eine weiße Farbe mit Alpha 0. Wenn Sie Alpha in der Ansicht verwenden, wird für das Neuzeichnen zusätzlicher Speicher benötigt (geringere Leistung).

6) Google-Internet für Ihre verwandten Themen mit dem Tag Best practices und Sie werden eine Menge nützlicher Informationen)

+0

danke für die Erklärung. Werde sie morgen ausprobieren und meine Ergebnisse melden. – kruben

+0

Nun habe ich meine Statuskreise durch ein Nested Layout und Kreisformulare ersetzt, so dass ich nicht nur 12MB weniger Speicherverbrauch habe, sondern jetzt auch für jedes Prozent die richtige Anzeige. Zuvor hatte ich nur 10 Bilder alle 10 Prozent-Schritte. 2 fliegt mit einem Schlag (ein deutsches Sprichwort. Weiß nicht, ob es in ånnlish existiert: D) ​​Next Step überarbeitet die anderen Bilder und verringert die Auflösung. Wird deine Antwort akzeptieren. Danke nochmal :) – kruben

+0

Gar nicht, Willkommen :) –