Aby wygenerować log czasu wykonywania aplikacji, możesz ją instrumentować
przy użyciu: Debug
zajęcia. Indywidualne skonfigurowanie aplikacji w ten sposób daje większą kontrolę nad tym, kiedy
urządzenie uruchomi się i przestanie rejestrować informacje śledzące. Urządzenie zapisuje też
przy użyciu podanych przez Ciebie nazw logów śledzenia, aby można było łatwo zidentyfikować
później. Każdy dziennik śledzenia możesz wyświetlić za pomocą Android Studio.
Program profilujący procesora.
Możesz też uruchamianie i zatrzymywanie śledzenia procesora w narzędziu do profilowania procesora bez instrumentacji kodu aplikacji.
Zanim zaczniesz generować logi śledzenia, upewnij się, że aplikacja dodała logikę do zapisywać logi śledzenia w specjalnych dla danej aplikacji Katalog.
Dostosuj aplikację
Aby utworzyć logi śledzenia, wywołaj startMethodTracing()
w którym system ma zacząć rejestrować dane śledzenia.
W trakcie rozmowy możesz podać nazwę dla pliku
.trace
, a system zapisze go w określonym pakiecie
który służy do przechowywania trwałych danych aplikacji na urządzeniu docelowym.
ten sam katalog zwracany przez funkcję
getExternalFilesDir()
i znajduje się w katalogu ~/sdcard/
na większości urządzeń.
Ten plik zawiera dane logu czasu metody binarnej oraz tabelę mapowania z wątkiem
i nazwy metod. Aby zatrzymać śledzenie, wywołaj
stopMethodTracing()
Poniższy przykład uruchamia i zatrzymuje rejestrowanie logu śledzenia o nazwie
sample.trace
:
Kotlin
// Starts recording a trace log with the name you provide. For example, the // following code tells the system to start recording a .trace file to the // device with the name "sample.trace". Debug.startMethodTracing("sample") // The system begins buffering the generated trace data, until your // application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes // the buffered data to the output file. Debug.stopMethodTracing()
Java
// Starts recording a trace log with the name you provide. For example, the // following code tells the system to start recording a .trace file to the // device with the name "sample.trace". Debug.startMethodTracing("sample"); ... // The system begins buffering the generated trace data, until your // application calls <code><a href="/reference/android/os/Debug.html#stopMethodTracing()">stopMethodTracing()</a></code>, at which time it writes // the buffered data to the output file. Debug.stopMethodTracing();
Pamiętaj, że jeśli aplikacja wywołuje metodę
startMethodTracing()
bez zmiany nazwy logu śledzenia, zastąpi on istniejący
zapisane na urządzeniu. Aby dowiedzieć się, jak dynamicznie zmieniać nazwę każdego logu czasu
przejdź do sekcji poświęconej zapisywaniu wielu dzienników.
Jeśli system osiągnie maksymalny rozmiar bufora, zanim zadzwonisz
stopMethodTracing()
,
system przestanie śledzić dane i wyśle powiadomienie do konsoli.
Metody uruchamiania i zatrzymywania logów czasu działają w całym procesie aplikacji. Ten
można zadzwonić,
startMethodTracing()
w zakresie aktywności
onCreate(Bundle)
i wywołaj stopMethodTracing()
w onDestroy()
tej aktywności
.
Pamiętaj, że gdy włączysz profilowanie, aplikacja działa wolniej. Oznacza to, że
nie powinny używać danych profilowania do określania bezwzględnych momentów czasowych (np. „metoda
foo()
uruchamia się w 2,5 sekundy”). Informacje o czasie w logach śledzenia są
przydaje się tylko przy porównywaniu jej z poprzednimi logami śledzenia, dzięki czemu można sprawdzić, czy ostatnie
zmiany przyspieszają lub spowalniają działanie aplikacji.
Podczas wdrażania na urządzeniach z Androidem 5.0 (poziom interfejsu API 21) lub nowszym możesz:
użyj profilowania opartego na próbkach, aby profilować mniej czasu w środowisku wykonawczym. Do
włączyć profilowanie próbne, wywołanie
startMethodTracingSampling()
(zamiast wywoływać startMethodTracing()
) z określonym próbkowaniem
interwału. System okresowo zbiera próbki, aż aplikacja wywoła
stopMethodTracing()
Zapisz wiele logów
Jeśli Twoja aplikacja wielokrotnie uruchamia i zatrzymuje śledzenie metody bez określenia
nowa nazwa dziennika śledzenia, urządzenie zastąpi starszy dziennik śledzeniem
nowy – to znaczy, że przechowuje on tylko najnowszy dziennik śledzenia. Aby zapisać kilka
logu czasu śledzenia na urządzeniu, można dynamicznie zmieniać nazwę logu śledzenia za każdym razem, gdy aplikacja
dzwoni pod numer startMethodTracing()
.
W przykładzie poniżej użyto parametru SimpleDateFormat
, aby uwzględnić bieżącą datę i godzinę podczas nazywania każdego logu śledzenia:
Kotlin
// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with // the current date and time. val dateFormat: DateFormat = SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault()) val logDate: String = dateFormat.format(Date()) // Applies the date and time to the name of the trace log. Debug.startMethodTracing("sample-$logDate")
Java
// Uses the <code><a href="/reference/java/text/SimpleDateFormat.html">SimpleDateFormat</a></code> class to create a String with // the current date and time. SimpleDateFormat dateFormat = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss", Locale.getDefault()); String logDate = dateFormat.format(new Date()); // Applies the date and time to the name of the trace log. Debug.startMethodTracing( "sample-" + logDate);
Dostęp do logów śledzenia na urządzeniu
Gdy system utworzy na urządzeniu dziennik śledzenia, będziesz mieć dostęp do pliku na jeden z tych sposobów:
Użyj Eksploratora urządzeń. Aby otworzyć Eksploratora urządzeń, kliknij Widok > Okna narzędziowe > Eksploratora urządzeń (lub kliknij Eksplorator urządzeń na pasku okna narzędzi). Jak widać na ilustracji 1 znajdziesz pliki
.trace
w w katalogu pakietu.Skopiuj plik na komputer lokalny za pomocą polecenia
adb pull
. Poniższe polecenie skopiuje z urządzenia dziennik śledzenia o nazwiesample.trace
do katalogu~/Documents/trace-logs/
komputera lokalnego.adb pull path-on-device/sample.trace ~/Documents/trace-logs/
Następnie możesz: zaimportuj plik śledzenia z Program profilujący procesora.