2 Stimmen

Android-Leistung: Problem mit langer Ladezeit, viele Ansichten

Ok, also schreibe ich ein Spiel, das einen Laden hat. Der Laden ist der Ort, an dem ich Probleme habe, weil jedes Element im Laden mehrere Statistiken hat und dann 2 Schaltflächen und einen Bearbeitungstext zum Kaufen/Verkaufen.

Das Layout für den Laden hat 3 Registerkarten mit jeweils 26 Elementen in jeder Registerkarte und das summiert sich auf: 130 ImageViews, 364 TextViews, 52 Schaltflächen und 26 EditTexts pro Registerkarte. Wenn Sie zählen, sind das insgesamt 1.768 Ansichten in einem 3-Registerkarten-Layout. (Ich weiß, "HEILIGE SCHEIßE!")

Ich habe nicht wirklich über Effizienz nachgedacht, als ich diesen Abschnitt geschrieben habe, und jetzt stelle ich fest, dass das Laden dieser Aktivität im Durchschnitt 3-5 Sekunden oder länger dauert. Ich möchte, dass es schneller lädt, aber mir gefällt das Layout und das allgemeine "Look and Feel" des Ladens so, wie es ist.

Ich habe bereits die Listener aufgeteilt, sodass sie nur auf die Elemente in der aktuellen Registerkarte hören und die Listener für die inaktiven Registerkarten deaktivieren. Das hat ein wenig geholfen, aber ich glaube nicht, dass dies ein wesentlicher Aspekt des Problems war.

Kann mir jemand etwas anderes vorschlagen, was ich tun kann, um die Ladezeit dieser Aktivität zu verkürzen?

EDIT: Screenshot. Ich habe etwas über einen Recycler gehört? Was ist das und würde es hier zur Verbesserung der Ladezeiten beitragen?

2voto

Mike Dunlavey Punkte 39339

Ich hatte ein ähnliches Problem beim Entwerfen komplexer Dialoge. Im Grunde ist die Anzahl der Elemente, die gleichzeitig angezeigt werden müssen, nicht groß, aber die Anzahl der Dinge, die möglicherweise angezeigt werden könnten, über alle Möglichkeiten hinweg, könnte ziemlich groß sein.

Ich habe eine domänenspezifische Sprache für die Kodierung komplexer Dialoge erstellt, hier diskutiert, und im Grunde ist die Art und Weise, wie sie Ihr Problem angeht, dass sie Objekte dynamisch erstellt/zerstört, wenn sie benötigt werden. Man könnte denken, dass dies in Bezug auf die Leistung teuer wäre, aber das ist es wirklich nicht, und der Vorteil, den Speicher nicht mit Dingen zu blockieren, die möglicherweise angezeigt werden könnten, aber wahrscheinlich nicht, ist ziemlich signifikant.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X