2 Stimmen

Startzeit einer Anwendung

Was ist der beste Weg, um eine App zu starten und ihre Startzeit in Android zu berechnen (wenn es mit etwas Code getan werden kann, dann ist es besser)

6voto

Zordid Punkte 10363

Hmm - um genauer zu sein, sollte ich darauf hinweisen, dass man unter Android Aktivitäten und keine Anwendungen startet!

Da der Einstiegspunkt in Ihre Anwendung die Aktivität ist, die die LAUNCH-Absicht verarbeitet, könnte man Ihre Frage so interpretieren: "Wie kann man die Startzeit der Aktivität messen?

Hierfür schlage ich vor, einen Lebenszyklus von Aktivitäten zu betrachten: https://developer.Android.com/reference/Android/app/Activity.html#ActivityLifecycle .

Wenn Sie sich das schöne Diagramm ansehen, sehen Sie, dass die Startzeit im Wesentlichen die Zeit ist, die in onCreate() , onStart() y onResume() .

Um das zu messen, würde ich vorschlagen, Folgendes zu verwenden Traceview denn so können Sie wirklich genau sehen, wo Sie Ihre Zeit verbracht haben! Beginnen Sie die Verfolgung mit Debug.startMethodTracing("startUp"); am Anfang des onCreate() und beenden die Verfolgung am Ende von onResume() avec Debug.stopMethodTracing(); .

Denn onCreate() nur einmal pro Instanz aufgerufen wird, müssen Sie sich nicht um mehrere Aufrufe von onResume() falls diese Aktivität in den Hintergrund gestellt wird, da Sie die Stop-Methode zweimal aufrufen, was aber nicht schadet!

Viel Spaß - mir gefallen die Möglichkeiten von traceview sehr gut!

1voto

Macarse Punkte 89366

Um es schnell zu machen, würde ich logcat verwenden, etwa so:

Log.d("tag", "starting");
/* code goes here */
Log.d("tag", "finished");

Wenn Sie etwas Größeres machen wollen, versuchen Sie Traceview .

1voto

Phi Punkte 85

Es wird ein automatisches Protokoll erstellt, etwa so

system_process I/ActivityManager Displayed com.android.vending/com.google.android.finsky.activities.MainActivity: +549ms

um die Startzeit einer App vom Tippen des Benutzers bis zur Bereitschaft der App zur weiteren Interaktion mit dem Benutzer anzuzeigen. Das ist von ActivityManager.

Auch die Verwendung von Logs zur Messung der Zeit zwischen onCreate() und onResume sollte eine gute Möglichkeit sein.

1voto

user2520215 Punkte 563

Sie könnten die Antwort finden ici -

Diese Informationen werden in Logcat standardmäßig ab API-Version 19 protokolliert. Der Schlüssel lautet an der richtigen Stelle zu suchen -

Wenn Sie die logcat-Ausgabe über die Kommandozeile oder ein Terminal verfolgen, ist es einfach, die verstrichene Zeit zu ermitteln. Um die verstrichene Zeit in Android Studio zu finden, müssen Sie die Filter in Ihrer logcat-Ansicht deaktivieren. Das Deaktivieren der Filter ist notwendig, weil der Systemserver, nicht die App selbst, dieses Protokoll liefert.

Der Vollständigkeit halber hier ein Beispiel aus der Dokumentation.

ActivityManager: Displayed com.android.myexample/.StartupTiming: +3s534ms

Die Auszüge stammen aus dem Dokumentation .

-1voto

Alex Punkte 39

Im Rahmen der obigen Antworten möchte ich anmerken, dass Traceview nicht in der Lage ist, die Echtzeit zu liefern, da JIT während der Profilerstellung ausgeschaltet ist. Traceview ist das unbrauchbare Werkzeug, um die Ausführungszeit des Quellcodes zu überwachen. (Traceview ist ein gutes Werkzeug, um nur Stacktrace zu überprüfen, wie oben erwähnt, indem die Debug-Klasse mit startMethodTracing() und stopMethodTracing() verwendet wird).

Ich schlage vor, systrace (über Eclipse-Plugin, zum Beispiel) ist das beste Werkzeug, um die Echtzeit der Ausführung (und viele andere Funktionen) zu berechnen.

Weitere Informationen finden Sie unter: http://developer.Android.com/tools/debugging/systrace.html

Außerdem möchte ich anmerken, dass systrace manchmal nicht funktioniert (abhängig von der FS-Zuordnung).

Sie müssen prüfen System \core\rootdir\init.rc ' mit korrekt von 'debugfs' montiert. Sollte so sein: debugfs einhängen /sys/kernel/debug /sys/kernel/debug'.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X