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 Lauf. Wenn Sie die Geschwindigkeit und Die Reaktionsfähigkeit einer App führt zu mehr aktiven Nutzern pro Tag und einem höheren Durchschnitt die Anzahl der wiederholten Besuche.
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, anstatt 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 bis zum 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.
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Analyse und Optimierung von App-Start-ups {:#app-startup-analysis-Optimization}
- App-Startzeit
- Eingefrorene Frames