Best Practices für die App-Optimierung

Mit den folgenden Best Practices können Sie Ihre App optimieren, ohne Abstriche bei der Qualität zu machen.

Baseline-Profile verwenden

Baseline-Profile können die Ausführungsgeschwindigkeit von Code ab dem ersten Start um 30% verbessern und alle Nutzerinteraktionen wie App-Start, Navigation zwischen Bildschirmen oder Scrollen durch Inhalte ab der ersten Ausführung reibungsloser gestalten. Durch die Erhöhung der Geschwindigkeit und Reaktionsfähigkeit einer App können Sie die Anzahl der aktiven Nutzer pro Tag und die durchschnittliche Rückkehrrate steigern.

Startprofil verwenden

Ein Startprofil ähnelt einem Baseline-Profil, wird aber zur Kompilierzeit ausgeführt, um das DEX-Layout für einen schnelleren App-Start zu optimieren.

App Startup-Bibliothek verwenden

Mit der App Startup-Bibliothek können Sie Komponenteninitialisierer definieren, die einen einzelnen Content-Provider verwenden, anstatt separate Content-Provider für jede Komponente zu definieren, die Sie initialisieren müssen. Dadurch kann die Startzeit der App erheblich verkürzt werden.

Bibliotheken verzögert laden oder die automatische Initialisierung deaktivieren

Apps verwenden viele Bibliotheken, von denen einige für den Start erforderlich sein können. Es gibt jedoch viele Bibliotheken, bei denen die Initialisierung bis nach dem Zeichnen des ersten Frames verzögert werden kann. Bei einigen Bibliotheken kann die automatische Initialisierung beim Start deaktiviert werden oder es gibt eine On-Demand-Initialisierung. Mit dieser Option können Sie die Initialisierung aufschieben, bis sie erforderlich ist, um die Leistung zu steigern. Sie können beispielsweise die On-Demand-Initialisierung verwenden, um WorkManager nur aufzurufen, wenn die Komponente benötigt wird.

Status in Composables verwenden

Der Status umfasst alle Daten, die sich im Laufe der Zeit ändern können und die bestimmen, was in der Benutzeroberfläche angezeigt wird oder wie sie sich verhält. Da Compose deklarativ ist, wird der Bildschirm nicht automatisch aktualisiert, es sei denn, die Benutzeroberfläche beobachtet explizit Änderungen am Status und reagiert darauf.

Verwenden Sie die bedingte Komposition, um das Laden von Teilen der Benutzeroberfläche zu verzögern, die beim Start nicht sofort sichtbar sind, z. B. Fehlerbildschirme, optionale Details oder sekundäre Tabs. Wenn Sie rechenintensive Komponenten in eine einfache Statusprüfung einbetten, vermeiden Sie, dass ihre Kompositionslogik während des kritischen Startzeitfensters ausgeführt wird. So bleibt Ihr anfängliches Layout schlank.

var shouldLoad by remember {mutableStateOf(false)}

if (shouldLoad) {
   MyComposable()
}

Laden Sie die Composables im bedingten Block, indem Sie shouldLoad ändern:

LaunchedEffect(Unit) {
   shouldLoad = true
}

Dadurch wird eine Neukomposition ausgelöst, die den Code im bedingten Block im ersten Snippet enthält. Weitere Informationen finden Sie unter Status in Composables.

Splash-Screen optimieren

Ladebildschirme sind ein wichtiger Bestandteil des App-Starts. Ein gut gestalteter Ladebildschirm kann dazu beitragen, den gesamten App-Start zu optimieren. In Android 12 (API‑Level 31) und höher ist ein Startbildschirm enthalten, der die Leistung verbessern soll. Weitere Informationen finden Sie unter Begrüßungsbildschirm.

Skalierbare Bildtypen verwenden

Wir empfehlen, für Bilder Vektorgrafiken zu verwenden. Wenn das nicht möglich ist, verwenden Sie WebP-Bilder. WebP ist ein Bildformat, das eine hervorragende verlustfreie und verlustbehaftete Komprimierung von Bildern im Web ermöglicht. Sie können vorhandene BMP-, JPG-, PNG- oder statische GIF-Bilder mit Android Studio in das WebP-Format konvertieren. Weitere Informationen finden Sie unter WebP-Bilder erstellen.

Außerdem sollten Sie die Anzahl und Größe der beim Start geladenen Bilder minimieren.

Leistungs-APIs verwenden

Die Leistungs-API für die Medienwiedergabe ist ab Android 12 (API-Level 31) verfügbar. Mit dieser API können Sie die Gerätefunktionen ermitteln und entsprechende Vorgänge ausführen.

Traces für Kaltstarts priorisieren

Ein Kaltstart bezieht sich auf den Neustart einer App. Der App-Prozess wird dann noch nicht vom Systemprozess erstellt. Ihre App wird in der Regel kalt gestartet, wenn Sie sie zum ersten Mal seit dem Booten des Geräts oder seit dem erzwungenen Beenden der App durch das System starten. Kaltstarts sind viel langsamer, da die App und das System mehr Arbeit leisten müssen als bei anderen Starttypen wie Warm- und Heißstarts. Mit dem System-Tracing von Kaltstarts erhalten Sie einen besseren Überblick über die App-Leistung.