Best Practices für die App-Optimierung

Mit den folgenden Best Practices kannst du deine App ohne Qualitätsverlust optimieren.

Baseline-Profile verwenden

Baseline-Profile können verbessert werden um 30% schneller Code ausführen. Interaktionen, z. B. App-Start, Wechseln zwischen Bildschirmen oder Scrollen durch Inhalte flüssiger ab dem ersten Aufruf. Wenn Sie die Geschwindigkeit und Die Reaktionsfähigkeit einer App führt zu mehr aktiven Nutzern pro Tag und einem höheren Durchschnitt Besuchsrate zurück.

Startprofil verwenden

A Start-up-Profil ähnelt einem Baseline-Profil, wird aber bei der Kompilierung ausgeführt, um den DEX-Layout für einen schnelleren App-Start

App-Startbibliothek verwenden

Mit der App-Startbibliothek können Sie Komponenteninitialisierer, die einen einzigen Contentanbieter nutzen, anstelle von separate Contentanbieter für jede zu initialisierende Komponente. Dies kann die App-Startzeit erheblich verkürzen.

Bibliotheken laden oder automatische Initialisierung deaktivieren

Anwendungen nutzen viele Bibliotheken, von denen einige für den Start erforderlich sein können. Es kann jedoch viele Bibliotheken geben, bei denen die Initialisierung verzögert werden kann, nachdem der erste Frame gezeichnet wurde. Bei einigen Bibliotheken gibt es eine Option zum Deaktivieren oder eine On-Demand-Initialisierung haben. Verwenden Option, die Initialisierung zu verschieben, bis es notwendig ist, um die Leistung zu steigern. Für können Sie beispielsweise On-Demand-Initialisierung , um WorkManager nur dann aufzurufen, wenn die Komponente erforderlich ist.

ViewStubs verwenden

Ein ViewStub ist eine unsichtbare Größe von null View, mit dem Sie Layoutressourcen zur Laufzeit verzögert erhöhen können. Dieses können Sie das Aufblähen von Ansichten, die beim Start nicht erforderlich sind, auf eine .

Wenn Sie Jetpack Compose verwenden, können Sie ein ähnliches Verhalten wie ViewStub erhalten Verwenden des Zustands, um das Laden einiger Komponenten zu verzögern:

var shouldLoad by remember {mutableStateOf(false)}

if (shouldLoad) {
   MyComposable()
}

Laden Sie die zusammensetzbaren Elemente in den bedingten Block, indem Sie shouldLoad ändern:

LaunchedEffect(Unit) {
   shouldLoad = true
}

Dies löst eine Neuzusammensetzung aus, die den Code innerhalb der Bedingung im ersten Snippet einfügen.

Ladebildschirm optimieren

Startbildschirme spielen beim App-Start eine wichtige Rolle. kann dazu beitragen, den App-Start insgesamt zu verbessern. Android-Geräte ab Version 12 (API-Level 31) enthält einen Ladebildschirm, der die Leistung. Weitere Informationen finden Sie unter Splash .

Skalierbare Image-Typen verwenden

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

Minimieren Sie außerdem die Anzahl und Größe der beim Start geladenen Images.

Performance APIs verwenden

Die Performance API für Medien Wiedergabe ist auf Android-Geräten verfügbar. 12 (API-Level 31) und höher. Sie können diese API verwenden, um das Gerät zu verstehen und Operationen entsprechend durchführen.

Kaltstart-Traces priorisieren

Ein Kaltstart bezieht sich auf eine App. bei null anzufangen. Der Prozess des Systems erstellt also noch nicht App-Prozesses. Deine App startet normalerweise kalt, wenn du sie zum ersten Mal Zeit seit dem Starten des Geräts oder seit dem erzwungenen Beenden der App durch das System. Kalt sind wesentlich langsamer, da App und System mehr Arbeit ausführen müssen, ist bei anderen Starttypen wie Warm- und Heißstarts nicht erforderlich. System-Tracing Kaltstarts geben Ihnen einen besseren Überblick über die App-Leistung.