Uygulama Yanıt Vermiyor (ANR) hataları, uygulamanın kullanıcı arayüzü iş parçacığı
Ek olarak Crashlytics belirli sorunlu konuların belirlenmesine yardımcı olabilir. ANR'leri analiz ediyoruz ve ardından Crashlytics kontrol panelinde ANR'deki hataların nasıl ayıklanacağına dair ipuçları sağlamak için ilgili ileti dizilerini etiketliyoruz.
Bu sayfanın aşağıdaki bölümlerinde her bir ANR etiketinin ne anlama geldiği açıklanmakta, bu etikete sahip bir ANR örneği gösterilmekte ve ANR'de hata ayıklamak için önerilen bir çözüm sunulmaktadır.
Triggered ANR
Çok uzun süre engellenen ve ANR'yi tetikleyen bir ileti dizisine bununla ilgili açıklama eklenirTriggered ANR
.
Sorunlu iş parçacığı, uygulamanın ana iş parçacığı veya yanıt vermediği tespit edilen herhangi bir iş parçacığı olabilir. Ancak konu şu şekilde etiketlendi:Triggered ANR
ANR'nin gerçek nedeni olabilir veya olmayabilir. Bu ANR'lerde hata ayıklama ve düzeltmeye yönelik bilgiler sağlamak için Crashlytics ayrıca ANR'ye dahil olan diğer tüm ileti dizilerini de etiketler. Bu sayfanın ilerleyen bölümlerinde bir konuya uygulanabilecek diğer etiketler hakkında bilgi edinin.
Deadlocked
ANR'ye yol açan bir çıkmaza karıştığı tespit edilen tüm ileti dizilerine bununla ilgili açıklama eklenirDeadlocked
etiket.
Bir iş parçacığı bekleme durumuna girdiğinde, gerekli bir kaynak başka bir iş parçacığı tarafından tutulduğundan ve bu iş parçacığı da ilk iş parçacığı tarafından tutulan bir kaynağı beklediğinde kilitlenme meydana gelir. Uygulamanın ana ileti dizisi bu durumdaysa ANR'lerin meydana gelmesi muhtemeldir.
Öneri
Kilitlenmeyle ilgili iş parçacıklarına bakın ve bu iş parçacıkları tarafından elde edilen kaynakları/kilitleri kontrol edin. Olası çözümler için Kilitlenme ve Kilitlenme önleme algoritmalarına bakın.
IO Root blocking
Yavaş G/Ç işlemlerini yürüten ve bu işlemleri engelleyen herhangi bir iş parçacığıTriggered ANR
ileti dizisine şu açıklama eklenir:IO Root blocking
etiketi. EğerTriggered ANR
ileti dizisi diğer ileti dizileri tarafından engellenmiyorsa,IO Root blocking
iş parçacığı aynı zamanda birRoot blocking
iş parçacığı.
Öneri
Genel olarak uygulamanız ana iş parçacığında pahalı G/Ç işlemlerini yürütmemelidir. Ana iş parçacığının olması durumundaIO Root blocking
, ana iş parçacığında meydana gelen istenmeyen G/Ç işlemlerini tanımlamak için Katı Modu da kullanabilirsiniz.
Root blocking
Olarak etiketlenen konuyu engelleyen herhangi bir konuTriggered ANR
şu ifade eklenir:Root blocking
etiketi. Bir konu her ikisi olarak etiketlenmişseRoot blocking
veTriggered ANR
bu ileti dizisini engelleyen başka ileti dizisi yoktur.
VarsaTriggered ANR
ileti dizileri diğer ileti dizilerini (belki de geçişli olarak) bekliyordu.Root blocking
. Bir ileti dizisinin ANR'nin temel nedeni olmasının çeşitli nedenleri olabilir.
Öneri
Ana iş parçacığında CPU yoğun çalışmayı en aza indirin. CPU yoğun görevleri gerçekleştirmek için çalışan veya arka plan iş parçacıklarını kullanın.
Ana iş parçacığında bir veritabanından yükleme yapmak gibi yoğun G/Ç çalışmalarını en aza indirin.
Unknown root cause
Bir konu şununla etiketlendi:Unknown root cause
etiketi. Crashlytics, temel nedeni belirlemek için yeterli bilgiye sahip değil. Bu ANR'nin meydana gelmesinin belirgin bir nedeni yoktur.
Öneri
ANR'lerin nasıl önleneceğine ilişkin genel tavsiyelere uyun. Örneğin, kodunuzda uygulamanın ana iş parçacığının