Es wurde ein Leistungsproblem festgestellt, wenn viele verschachtelte RelativeLayouts verwendet wurden.
Komplexe RelativeLayout-basierte Ansicht - Leistungsproblem
Zum Beispiel, wenn wir einige RelativeLayout als UI-Wurzel, und jeden Behälter (Buttons, Labels, Textview, Imageview) ist eine RelativeLayout + Android-basierte Komponente (ex. AButton = RelativeLayout + Imageview + Textview), dann in eine komplexe Ansicht von 4 Buttons, 3 Bildern und 6 Labels erhalten wir ~ 15 verschachtelte RelativeLayouts.
RelativeLayout hat eine sehr komplexe onMeasure-Methode, die die Größe jedes untergeordneten Elements berechnet, um die Größe des Layouts zu bestimmen. Die Berechnung der Größe einer komplexen Ansicht von 15-20 verschachtelten RelativeLayouts kostet ~ 5 Sekunden, das ist zu viel. onMeasure ist der teuerste aller Anrufe, sogar das Zeichnen ist viel schneller abgeschlossen als die Messung. < = UPD =>
Um zu verhindern, dass Vorschläge erscheinen, native Android-Ansichten zu verwenden, um etwas Komplexes zu erstellen:
Fähigkeit, alles zu allem hinzuzufügen, ist erforderlich. Deshalb muss jeder Container nicht nur View, sondern ViewGroup sein. Und RelativeLayout-Funktionen wie Schwerkraft und Ausrichtung können ebenfalls sehr hilfreich sein, weshalb viele RelativeLayouts verwendet werden. < =/UPD =>
Hatte jemand diese Leistungsprobleme?
Sollte RelativeLayout durch ein anderes Layout-Problem ersetzt werden?
Oder das Entfernen all dieser verschachtelten Layouts ist die einzige Möglichkeit, mit dem Problem umzugehen?
Weiß jemand, wie viele Layouts verschachtelt werden können, ohne dass Leistungsprobleme auftreten?
Wie haben Sie diese Verzögerung gemessen? –
Verwenden von Debugmethoden und integriertem TraceView-Dienstprogramm. Sie können weitere Details hier erhalten http://stackoverflow.com/questions/1957135/how-do-test-the-performance-of-andandroid-application – AAverin