Uygulamanızın yürütülmesine dair bir yöntem izi oluşturmak için uygulamanızı enstrümantasyon
Debug
kullanılıyor
sınıfını kullanır. Uygulamanızı bu şekilde kullanmanız durumunda tam olarak ne zaman
cihaz, izleme bilgilerini kaydetmeye başlar ve durdurulur. Cihaz,
her günlüğü kolayca tanımlayabilmeniz için, belirttiğiniz adları kullanarak iz günlüklerinizi
daha sonra. Daha sonra, Android Studio'yu kullanarak her iz günlüğünü görüntüleyebilirsiniz
CPU Profil Aracı.
Ayrıca transkriptinizi CPU Profiler'da izlemeyi başlatma ve durdurma enstrümantasyonunu kullanabilirsiniz.
İz günlükleri oluşturmaya başlamadan önce uygulamanızın izleme günlüklerini uygulamaya özgü dizinine ekleyin.
Uygulamanızı kullanma
İz günlükleri oluşturmak için startMethodTracing()
komutunu çağırın
sistemin izleme verilerini günlüğe kaydetmeye başlamasını istediğiniz yeri seçin.
Görüşmede, görüşme için kullanılacak
.trace
dosyası olarak yükleyebilirsiniz ve sistem bunu pakete özel bir
hedef cihazdaki kalıcı uygulama verileri için tasarlanmış bir dizindir.
döndürdüğü dizinin aynısı olan
getExternalFilesDir()
ve çoğu cihazda ~/sdcard/
dizininde bulunur.
Bu dosya, ikili yöntem iz verilerini ve iş parçacığı içeren bir eşleme tablosunu içerir
bahsedeceğim. İzlemeyi durdurmak için şunu arayın:
stopMethodTracing()
Aşağıdaki örnek, şu ada sahip iz günlüğünü kaydetmeyi başlatır ve durdurur:
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();
Uygulamanız
startMethodTracing()
.
adını değiştirmeden, mevcut günlüğün üzerine yazar ve
cihaza kaydedilir. Her bir iz adının dinamik olarak nasıl değiştirileceğini öğrenmek için
günlüğüne birden fazla günlüğü kaydetme ile ilgili bölüme gidin.
Siz çağrı yapmadan önce sistem maksimum arabellek boyutuna ulaşırsa
stopMethodTracing()
,
sistem izlemeyi durdurur ve konsola bir bildirim gönderir.
İzleri başlatan ve durduran yöntemler uygulama sürecinizin tamamında işe yarar. O
telefon edebilir
startMethodTracing()
.
etkinliğinde
onCreate(Bundle)
yöntemini çağırın ve stopMethodTracing()
yöntemini çağırın
bu etkinliğin onDestroy()
yöntemidir.
Profil oluşturma etkinleştirildiğinde uygulamanızın daha yavaş çalıştığını unutmayın. Yani,
Mutlak zamanlamaları belirlemek için profil oluşturma verilerini kullanmamalıdır (örneğin, "yöntem
foo()
sayfasının çalışması 2,5 saniye sürer). İzleme günlüklerindeki zamanlama bilgileri:
önceki iz günlükleriyle karşılaştırıldığında yararlıdır. Böylece, son verilere sahip
değişiklikler uygulamanızı daha hızlı veya daha yavaş hale getirir.
Android 5.0 (API düzeyi 21) ve sonraki sürümleri çalıştıran cihazlara dağıtım yaparken şunları yapabilirsiniz:
Çalışma zamanı performansı üzerindeki etkisi daha az olan profil oluşturmak için örnek tabanlı profil oluşturma yöntemini kullanın. Alıcı:
örnek profil oluşturmayı etkinleştirme, çağrı
startMethodTracingSampling()
.
(startMethodTracing()
çağrısı yerine) belirtilen bir örneklemeyle
seçebilirsiniz. Sistem, uygulamanız çağrı yapana kadar düzenli aralıklarla örnekler toplar
stopMethodTracing()
Birden çok günlüğü kaydetme
Uygulamanız bir yöntem izlemeyi başlatma ve durdurma işlemi için bir yöntem izlemeyi birden fazla kez başlatırsa ve
yeni bir ad belirtirseniz cihaz, eski iz günlüğünün üzerine
yani yalnızca en son iz günlüğünü saklar. Birden fazla kaydetmek için
cihazınıza İzleme günlüklerini dinamik bir şekilde yeniden adlandırabilirsiniz. Uygulamanız her seferinde iz günlüğünü
startMethodTracing()
araması yapar.
Aşağıdaki örnekte SimpleDateFormat
kullanılmaktadır
sınıfını kullanın:
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);
Cihazdaki izleme günlüklerine erişin
Sistem, cihazınızda izleme günlüğünü oluşturduktan sonra dosyaya erişebilirsiniz aktarabilirsiniz:
Cihaz Gezgini'ni kullanın. Cihaz Gezgini'ni açmak için Görünüm > Araç Pencereleri > Cihaz Gezgini'ni açın (veya Cihaz Gezgini düğmesine basın). Şekil 1'de gösterildiği gibi
.trace
dosyalarını uygulamanızın pakete özgü dizin oluşturur.adb pull
komutunu kullanarak dosyayı yerel makinenize kopyalayın. Aşağıdaki komut, cihazdansample.trace
adlı bir iz günlüğünü yerel makinenizin~/Documents/trace-logs/
dizinini oluşturur.adb pull path-on-device/sample.trace ~/Documents/trace-logs/
Ardından izleme dosyasını içe aktarın ve CPU Profil Aracı.