Kilitlenmeler ve İstisnalar - Android SDK

Bu belgede, Android v3 için Google Analytics SDK'sı kullanılarak kilitlenme ve istisna ölçümüne yüksek düzey bir genel bakış sunulmaktadır.

Genel bakış

Kilitlenme ve istisna ölçümü, uygulamanızda gerçekleşen yakalanan ve yakalanmamış kilitlenmelerin ve istisnaların sayısını ve türünü ölçmenize olanak tanır. Aşağıdaki alanlar bir istisnadır:

Alan adı İzleyici Alanı Tür Gerekli Açıklama
Açıklama Fields.EX_DESCRIPTION String Hayır İstisnanın açıklaması (en fazla 100 karakter). null .
isFatal Fields.EX_FATAL boolean Evet Özel durumun önemli olup olmadığını gösterir. true önemli değeri belirtir.

Kilitlenme ve istisna verileri, öncelikli olarak Kilitlenme ve İstisnalar raporunda bulunur.

Yakalanan İstisnalar

Yakalanan istisnalar, uygulamanızda istisna işleme kodu tanımladığınız (örneğin, veri isteği sırasında ağ bağlantısının zaman zaman aşımına uğraması) hatalardır.

İzleyicide istisna alanı değerlerini ayarlayıp isabeti göndererek yakalanan bir istisnayı ölçün (bu örnekte olduğu gibi):

/*
 * An app tries to load a list of high scores from the cloud. If the request
 * times out, an exception is sent to Google Analytics
 */
try {

  // Request some scores from the network.
  ArrayList highScores = getHighScoresFromCloud();

} catch (IOException e) {

  // May return null if EasyTracker has not yet been initialized with a
  // property ID.
  EasyTracker easyTracker = EasyTracker.getInstance(this);

  // StandardExceptionParser is provided to help get meaningful Exception descriptions.
 	easyTracker.send(MapBuilder
      .createException(new StandardExceptionParser(this, null)              // Context and optional collection of package names
                                                                            // to be used in reporting the exception.
                       .getDescription(Thread.currentThread().getName(),    // The name of the thread on which the exception occurred.
                                       e),                                  // The exception.
                       false)                                               // False indicates a nonfatal exception
      .build()
  );


  ... // Display alert to user that high scores are currently unavailable.
}

Yakalanmamış İstisna Ölçümü

Yakalanmayan istisnalar, uygulamanızın çalışma zamanında beklenmedik koşullarla karşılaştığı ve genellikle kritik öneme sahip olarak uygulamanın kilitlenmesine neden olduğu örnekleri temsil eder. EasyTracker veya ExceptionReporter sınıfı kullanılarak Google Analytics'e otomatik olarak yakalanmamış istisnalar gönderilebilir.

EasyTracker'ı kullanma

EasyTracker'ı kullanarak uygulamanızdaki yakalanmamış tüm istisnaları otomatik olarak göndermek için şu satırı analytics.xml dosyanıza ekleyin:

<bool name="ga_reportUncaughtExceptions">true</bool>

Otomatik istisna ölçümünü kullanarak bir istisna gönderdikten sonra, EasyTracker, istisnayı Thread öğesinin varsayılan istisna işleyicisine iletir.

Gelişmiş Uygulama Kullanma

Gelişmiş bir uygulama kullanıyor ve EasyTracker kullanmıyorsanız otomatik yakalanmamış istisna ölçümünü uygulamak için ExceptionReporter sınıfını kullanın.

ExceptionReporter, uygulamanızdaki belirli bir iş parçacığı veya tüm iş parçacıkları için varsayılan yakalanmamış istisna işleyici olarak işlev görebilir. Google Analytics'e bir istisna gönderdikten sonra, ExceptionReporter sınıfı isteğe bağlı olarak istisnayı, sağladığınız yakalanmamış bir istisna işleyiciye iletebilir.

Aşağıdaki kod yeni bir ExceptionReporter nesnesi oluşturur ve bunu yeni varsayılan yakalanmamış istisna işleyici olarak ayarlar. Sonuç olarak, yakalanmayan her istisna Google Analytics'e gönderilir ve ardından bir önceki yakalanmamış istisna işleyiciye aktarılır. Çoğu uygulamada, varsayılan işleyici istisnayı günlüğe kaydeder ve uygulamayı sonlandırır.

UncaughtExceptionHandler myHandler = new ExceptionReporter(
    GoogleAnalytics.getInstance(this).getDefaultTracker(), // Tracker, may return null if not yet initialized.
    GAServiceManager.getInstance(),                        // GAServiceManager singleton.
    Thread.getDefaultUncaughtExceptionHandler());          // Current default uncaught exception handler.

// Make myHandler the new default uncaught exception handler.
Thread.setDefaultUncaughtExceptionHandler(myHandler);

Otomatik istisna ölçümünü kullanırken aşağıdakileri göz önünde bulundurun:

  • Otomatik istisna ölçümü kullanılarak gönderilen tüm istisnalar Google Analytics'te önemli olarak raporlanır.
  • Varsayılan olarak açıklama alanı istisna türü, sınıf adı, yöntem adı ve iş parçacığı adı kullanılarak otomatik olarak ayarlanır.

Ayrıştırma İstisnası Açıklamaları

SDK, istisna açıklamalarını Google Analytics'e gönderme ve alma sürecini basitleştirmek için bir StandardExceptionParser sağlar:

// Using StandardExceptionParser to get an Exception description.
try {

  // Request some scores from the network.
  ArrayList highScores = getHighScoresFromCloud();

} catch (IOException e) {

  // May return null if EasyTracker has not yet been initialized with a
  // property ID.
  EasyTracker easyTracker = EasyTracker.getInstance(this);

 	easyTracker.send(MapBuilder
      .createException(new StandardExceptionParser(this, null)              // Context and optional collection of package names
                                                                            // to be used in reporting the exception.
                       .getDescription(Thread.currentThread().getName(),    // The name of the thread on which the exception occurred.
                                       e),                                  // The exception.
	                     false)                                               // False indicates a fatal exception
      .build()
  );

  ... // Display alert to user that high scores are currently unavailable.
}

Google Analytics'e bir istisna gönderirken ExceptionParser arayüzünü uygulayıp setDescription yöntemini çağırarak kendi ayrıştırıcınızı da uygulayabilirsiniz.