Erstellungsphasen und Leistung

Wenn die Funktion „Compose“ einen Frame aktualisiert, durchläuft dies drei Phasen:

  • Komposition:Mit der Option „Schreiben“ wird festgelegt, was angezeigt wird. Er führt zusammensetzbare Funktionen aus und erstellt den UI-Baum.
  • Layout:Mit der Funktion „Compose“ werden Größe und Position der einzelnen Elemente in der UI-Baumstruktur festgelegt.
  • Zeichnung:Beim Erstellen werden die einzelnen UI-Elemente tatsächlich rendert.

Bei der Funktion „Compose“ können nicht benötigte Phasen intelligent übersprungen werden. Angenommen, ein einzelnes Grafikelement wechselt zwischen zwei Symbolen derselben Größe. Da sich die Größe dieses Elements nicht ändert und keine Elemente des UI-Baums hinzugefügt oder entfernt werden, kann bei der Erstellung die Zusammensetzungs- und Layoutphase übersprungen und dieses eine Element neu gezeichnet werden.

Aufgrund von Codierungsfehlern kann Compose jedoch schwer erkennen, welche Phasen sicher übersprungen werden können. In diesem Fall werden alle drei Phasen ausgeführt, was Ihre UI verlangsamen kann. Viele der Best Practices für die Leistungsfähigkeit sollen dabei helfen, die nicht erforderlichen Phasen zu überspringen.

Weitere Informationen finden Sie im Leitfaden zu den Jetpack Compose Phases.

Allgemeine Prinzipien

Es gibt einige allgemeine Prinzipien, die die Leistung im Allgemeinen verbessern können:

  • Verschieben Sie Berechnungen nach Möglichkeit aus Ihren zusammensetzbaren Funktionen. Zusammensetzbare Funktionen müssen möglicherweise bei Änderungen an der Benutzeroberfläche noch einmal ausgeführt werden. Jeder Code, den Sie in die zusammensetzbare Funktion einfügen, wird erneut ausgeführt, möglicherweise für jeden Frame einer Animation. Beschränken Sie den Code der zusammensetzbaren Funktion auf das, was zum Erstellen der UI erforderlich ist.
  • Steigen Sie Statuslesevorgänge so lange wie möglich aus. Wenn Sie die Statuslesefunktion in eine untergeordnete zusammensetzbare Phase oder eine spätere Phase verschieben, können Sie die Neuzusammensetzung minimieren oder die Zusammensetzungsphase vollständig überspringen. Dazu können Sie Lambda-Funktionen anstelle des Statuswerts für sich häufig ändernde Status übergeben und Lambda-basierte Modifikatoren verwenden, wenn Sie einen sich häufig ändernden Status übergeben. Ein Beispiel für dieses Verfahren finden Sie unter Best Practices anwenden im Abschnitt Lesevorgänge so lange wie möglich aufschieben.

Weitere Ressourcen