Warum sind verschachtelte Gewichtungen schlecht für die Leistung? Alternativen?
Ich geschrieben habe, ein paar layout-Dateien, wo ich die layout_weight
Attribut zu erstellen, der ein Verhältnis zwischen verschiedenen Ansichten.
Irgendwann, fange ich an lint-Warnungen über verschachtelte GEWICHTE.
So, ich Frage mich, warum sind verschachtelte GEWICHTE schlecht für die performance, und wenn es eine effizientere Art und Weise zu erstellen, die ein konstantes Verhältnis zwischen anzeigen-Dimensionen, die verwendet werden könnten, für verschiedene Bildschirm-Größen und das muss nicht geben Sie eine Menge von dimension dpi-Werte über mehrere layout-Dateien (für verschiedene Bildschirm-Größen, meine ich).
Danke!
Kommentar zu dem Problem
Ein Super Beitrag für die Layout-Optimierung developer.android.com/training/improving-layouts/...
InformationsquelleAutor der Frage MobileCushion | 2012-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verschachtelte GEWICHTE sind schlecht für die performance weil:
Es ist immer besser, RelativeLayouts und passen Sie Ihre anzeigen nach den Orten der anderen Ansichten ohne Verwendung bestimmte dpi-Werte.
InformationsquelleAutor der Antwort C.d.
Update:, Wie wir wissen, die Prozent-support-Bibliothek ist veraltet, aus der API-level 26.
ConstraintLayout
ist der neue Weg, um die gleiche flache xml-Struktur.Aktualisiert Github-Projekt
Aktualisierte Beispiele:
Update: Tolle Neuigkeiten-android-Prozent-support-Bibliothek löst unser problem der Leistung und verschachtelt, chaotisch gewichtet
LinearLayout
Betrachten Sie dieses einfache layout, um zu demonstrieren, das gleiche.
Vermieden Leistung degrader verschachtelte
LinearLayout
mit gewichten.Wirklich genial!!!.InformationsquelleAutor der Antwort nitesh
Denke ich (und werde ich wahrscheinlich geflamed für diese), aber wieder denke ich mein Handy hat einen quad-core-Prozessor, das in Konkurrenz (wenn nicht sogar völlig zerstören) die meisten Menschen auf den heimischen PC.
Ich denke auch, dass diese Art von hardware wird die Zukunft der Handys.
Damit ich zum Schluss gekommen, dass, solange Sie sich nicht hinreißen, mit nesting (MHO ein layout sollte nie mehr als 4 Ebenen tief, und wenn es ist, sind Sie wahrscheinlich tun es falsch), Ihre Telefon könnte weniger Pflege über GEWICHTE.
Gibt es viele Dinge, die Sie tun können, haben einen viel weitergehenden Einfluss auf die Leistung, dann Gedanken über den Prozessor machen einige extra-math.
(bitte beachten Sie, dass ich etwas humorvoll, und so nicht zu, nehmen nichts ernst zu nehmen von diesem posten, die andere dann auf die Idee, dass es andere Dinge, die Sie optimieren sollten, zuerst, und, die sich Gedanken über eine 2-3-Ebene Tiefe Gewicht wird nicht helfen, Ihre Gesundheit)
InformationsquelleAutor der Antwort WIllJBD
Der Hauptgrund, warum verschachtelte GEWICHTE schlecht sind, ist, dass wenn ein layout hat Kinder mit einem Gewicht, es muss gemessen werden zweimal (ich denke, dies ist bereits in der lint-Warnung). Dies bedeutet, dass ein gewichteter layout, enthält auch eine gewichtete layout wurde gemessen, vier mal, und jeder 'Schicht' von gewichten, die Sie hinzufügen, erhöhen Sie die Maßnahmen mit einer Leistung von zwei.
ICS (API level 14) die
Grid
wurde Hinzugefügt, die es ermöglicht einfach und "flach" Lösungen für viele layouts, die zuvor erforderlichen GEWICHTE. Wenn Sie die Entwicklung für frühere Versionen von Android haben Sie etwas schwerer GEWICHTE entfernen, aber mit einemRelativeLayout
und ebneten so viel wie möglich von Ihrem layout in die Kabine in der Regel entfernen Sie eine Menge von verschachtelten GEWICHTE.InformationsquelleAutor der Antwort Jave
Ich denke, die einzige alternative ist, um eine Funktion, die aufgerufen werden würde, onResume und setzt alle Größen und Positionen. Trotzdem, nach Gewicht Sie können nur die Größen aber keine Polsterung (also layouts, die sich noch mehr kompliziert), keine textSize (unmöglich zu kompensieren das irgendwie), geschweige denn solche Dinge wie Anzahl der Linien.
InformationsquelleAutor der Antwort Gangnus