Android uygulamanızda Crashlytics kontrol panelindeki ANR etiketlerine dayalı hata ayıklayın

Uygulama Yanıt Vermiyor (ANR) hataları, Uygulama 5 saniyeden uzun süredir yanıt vermiyor. Okuyabilirsiniz ANR'ler ve ANR'leri teşhis etme hakkında daha fazla bilgi Android dokümanları.

Ayrıca Crashlytics, belirli sorunlu iş parçacıklarını tespit etmenize yardımcı olabilir. Biz ANR'leri analiz eder ve ardından Crashlytics kontrol panelinde ANR'nin nasıl ayıklanacağıyla ilgili ipuçları sağlamak için geçerli ileti dizilerini etiketleyin.

Bu sayfanın aşağıdaki bölümlerinde, her bir ANR etiketinin ne anlama geldiği açıklanmakta ve etiket oluşturur ve ANR'de hata ayıklamak için önerilen bir çözüm sunar.

Triggered ANR

Çok uzun süre engellenen ve ANR'yi tetikleyen bir ileti dizisine bu Triggered ANR etiketini kullanabilirsiniz.

Sorunlu ileti dizisi, uygulamanın ana ileti dizisi veya bulunan herhangi bir ileti dizisi olabilir. yanıt vermemesini sağlayabilirsiniz. Ancak, ileti dizisi İşlemin gerçek nedeni Triggered ANR olabilir veya olmayabilir. sorunu çözebilir. Bu ANR'lerle ilgili hata ayıklama ve düzeltme analizleri sağlamak için Crashlytics, ANR'ye dahil olan diğer ileti dizilerini de etiketler. bölümlerini takip ederek, etkilenebilecek diğer etiketler hakkında bilgi edinin. ileti dizisine uygulandı.

Deadlocked

ANR'ye neden olan bir kilitlenmeye neden olduğu tespit edilen tüm ileti dizileri bu Deadlocked etiketiyle belirtilir.

Bir iş parçacığı zorunlu bir ayar nedeniyle bekleme durumuna girdiğinde kaynağı başka bir iş parçacığı tarafından tutuluyor. Bu iş parçacığı da ele alacağız. Uygulamanın ana iş parçacığı bu durumdaysa ANR'ler büyük olasılıkla inceleyebilirsiniz.

Öneri

Kilitlenmeyle ilgili ileti dizilerine bakın ve edinilen kaynakları/kilitleri kontrol edin . Referans Kilitlenmeler ve Kilitlenmeyi önleme algoritmaları göz atabilirsiniz.

IO Root blocking

Yavaş G/Ç işlemleri yürüten ve Triggered ANR ileti dizisine IO Root blocking etiketi. Öğe Triggered ANR ileti dizisi, diğer ileti dizileri tarafından engellenmiyor. IO Root blocking ileti dizisi de bir Root blocking ileti dizisi.

Öneri

Genel olarak, uygulamanız ana ileti dizisi. Bu örnekte, IO Root blocking, şunları da kullanabilirsiniz: Yüksek Mod ana sayfada gerçekleşen yanlışlıkla G/Ç işlemlerini belirlemek için ileti dizisi.

Root blocking

olarak etiketlenen ileti dizisini engelleyen tüm ileti dizileri Triggered ANR Root blocking etiketi. Bir ileti dizisi her ikisi olarak da etiketlenmişse Root blocking ve Triggered ANR ise başka ileti dizisi yoktur: o ileti dizisini engelleyebilirsiniz.

Bekleyen Triggered ANR ileti dizisi varsa (belki geçişli) ise diğer iş parçacıkları için Root blocking. Bir iş kırılım yapısı oluşturmak üzere ileti dizisi, ANR'nin temel nedeni.

Öneri

Ana iş parçacığında CPU yoğun çalışmayı en aza indirin. Çalışan veya arka plan ileti dizilerini kullanma tercih edebilirsiniz.

Ana iş parçacığında, veritabanından yükleme gibi G/Ç yoğun işleri en aza indirin.

Unknown root cause

Bir ileti dizisi aşağıdaki durumlarda Unknown root cause etiketiyle etiketlenmişse ANR'yi tetikleyen ileti dizisidir. Ancak, ANR oluştu. Crashlytics, belirlemek için yeterli bilgiye sahip değil neden olabilir. Bu ANR'nin oluşmasının belirgin bir nedeni yok.

Öneri

ANR'leri nasıl önleyeceğinizle ilgili genel tavsiyeyi uygulayın. Örneğin, kodunuzda, uygulamanın ana iş parçacığının daha uzun süre meşgul olabileceği yerlerdir 5 saniye.