Dostosuj aplikację do swoich potrzeb i generuj dzienniki śledzenia

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.

    Rysunek 1. Znajdź logi śledzenia za pomocą Eksploratora urządzeń.

  • Skopiuj plik na komputer lokalny za pomocą polecenia adb pull. Poniższe polecenie skopiuje z urządzenia dziennik śledzenia o nazwie sample.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.