Startlatenz verbessern

Die Latenz beim Start ist ein wichtiger Messwert, um die täglich aktiven Nutzer zu binden und für eine nahtlose Nutzererfahrung von der ersten Interaktion an zu sorgen. Dies gilt insbesondere in Umgebungen mit geringem RAM, in denen Leistungseinbußen berücksichtigt werden können. Bevor Sie jedoch mit der Optimierung des App-Starts beginnen, ist es wichtig, die zugrunde liegenden Aspekte zu verstehen, die zum Start-up selbst beitragen.

Best Practices

Mit einem Baseline-Profil versenden

Referenzprofile verbessern die Geschwindigkeit der Codeausführung ab dem ersten Start um etwa 30 %, da Interpretations- und JIT-Kompilierungsschritte für enthaltene Codepfade vermieden werden. Durch das Versenden eines Baseline-Profils in eine App kann Android Runtime (ART) eingeschlossene Codepfade durch Ahead-of-Time-Kompilierung (AOT) optimieren und Leistungsverbesserungen für jeden neuen Nutzer und bei jedem App-Update bereitstellen.

Eifrige Initialisierungen vermeiden

Vermeiden Sie eifrig zu erledigende Arbeiten, die beim Start Ihrer App möglicherweise nicht erforderlich sind. Das wahrscheinlichste Szenario, in dem Ihre App einen Prozess startet, ist der Start der App. WorkManager, JobScheduler, BroadcastReceiver, gebundene Dienste und die AndroidX-Startbibliothek können jedoch auch App-Prozesse im Hintergrund starten. Vermeiden Sie es nach Möglichkeit, in Ihrer Application-Klasse unnötigerweise etwas zu initialisieren. Viele Bibliotheken bieten eine On-Demand-Initialisierung, sodass Sie sie nur bei Bedarf aufrufen können.

Aufgaben aus UI-Thread in Hintergrundthread verschieben

Wenn Aufgaben länger dauern und den Hauptthread blockieren, verschieben Sie sie in einen Hintergrundthread oder verwenden Sie WorkManager, um die Effizienz zu gewährleisten. Identifizieren Sie Vorgänge, die längere Zeiträume oder mehr Zeit in Anspruch nehmen als erwartet. Die Optimierung dieser Aufgaben kann die Latenz beim Start deutlich verbessern.

Schwerwiegende Laufwerkslesekonflikte analysieren und beheben

StrictMode ist ein Entwicklertool, mit dem sich versehentliche Laufwerk- oder Netzwerkzugriffe auf den Hauptthread der Anwendung erkennen lassen. Dort werden UI-Vorgänge empfangen und Animationen abgespielt. Sobald das Tool einen möglichen Verbesserungsbereich erkennt, können Sie die Anwendung automatisch beenden oder den Verstoß zu einem späteren Zeitpunkt zur weiteren Prüfung protokollieren.

Synchrone IPCs vermeiden

Lange Pausen bei der Ausführung Ihrer App werden häufig durch Binder-Aufrufe verursacht. Dies ist der IPC-Mechanismus (Inter-Process Communication) unter Android. Bei neueren Android-Versionen ist dies einer der häufigsten Gründe dafür, dass UI-Thread nicht mehr ausgeführt wird. Im Allgemeinen besteht die Lösung darin, das Aufrufen von Funktionen zu vermeiden, die Binderaufrufe ausführen. Wenn dies unvermeidbar ist, sollten Sie den Wert im Cache speichern oder Arbeiten in Hintergrundthreads verschieben. Weitere Informationen finden Sie unter Verzögerungen bei der Thread-Planung.