ANR bir istisna mı, bir hata mı, ne? Onu bir try{} catch(){}
yapısında yakalayabilir miyiz? (Hata Uygulaması Yanıt Vermiyor)"ANR" bir istisna mı, yoksa bir hata mı?
cevap
ANR tam olarak bir hata değildir. Uygulamanız çok durgun olduğunda ve yanıt vermek için çok zaman harcadığında, kullanıcının beklemesini sağlar. Uygulamanız uzun bir süre bekletiyorsa kullanıcı memnun olmaz. Dolayısıyla, Android çerçevesi kullanıcıya, uygulamanızı kapatma seçeneğini sunar. http://developer.android.com/guide/practices/design/responsiveness.html
Bu, ana iş parçacığı üzerinde uzun süreli işlem yaptığınız zaman oluşur. Sistem, ana iş parçacığı engellendiğinden bu süre boyunca kullanıcı etkileşimlerini işleyemez. Çözüm, bir iş parçacığında ağır işlemleri yapmak ve ana iş parçacığını ücretsiz tutmaktır.
ana iş parçacığı ağır bir hesaplama veya bir ağ soketinden verilerinin okunması ile meşgulse, hemen kullanıcı girişi böyle için Tahmin edebileceğiniz gibi
iletişim (ANR) Yanıt Vermiyor Uygulama yanıt veremez olarak dokunun veya hızlıca kaydırın.
Kullanıcı etkileşimine hızlı bir şekilde yanıt vermeyen bir uygulama, yanıt vermiyor - bir kaç yüz milisaniyeden daha fazla gecikme olursa fark edilebilir. Bu, Android platformunun kullanıcılarını ana iş parçacığı üzerinde çok fazla şey yapan uygulamalardan koruduğu böylesine tehlikeli bir sorundur.
Uyarı: Bir uygulama FVE saniye içinde kullanıcı girişine yanıt vermiyor
ise kullanıcı Uygulaması (ANR) iletişim Vermiyor ve uygulamadan çıkın seçeneği sunulacaktır göreceksiniz.
aşağıdaki ekran görüntüsü
tipik bir Android ANR iletişim gösterir:Android kullanıcı arayüzü donanım yenileme hızıyla yeniden çizilmesini eşitlemek için çok çalışır. Bu, saniyede 60 kare hızında yeniden çizmeyi hedeflediği anlamına gelir — bu, kare başına yalnızca 16.67 ms'dir. 'u 16 ms yakınında herhangi bir yere götüren ana iş parçacığı üzerinde çalışırsak, kare hızını etkileme riskiyle karşılaşırız, sonuçta jank ile sonuçlanır: animasyonları, sarsıntılı kaydırma vb.
İdeal olarak, elbette, tek bir çerçeve bırakmak istemiyoruz. Jank, tepkisizliği, ve özellikle ANR, kötü yorum ve popüler olmayan uygulamalara çeviren çok zayıf bir kullanıcı deneyimi sunar. Android uygulamalarını oluştururken yaşanacak bir kural: ana parçacığı engellemeyin!
Uyarı:
Android her cihazda Geliştirici Seçenekleri bir yardımcı katı mod ayarını sağlayan ekrandan göreceksiniz fl kül zaman ana iş parçacığı üzerinde uzun süren işlemleri gerçekleştirmek uygulamaları.
fazla koruma yeni durum sınıfı, NetworkOnMainThreadException, sistem ağ etkinlik ana iş parçacığı üzerinde başlatılan algılarsa atılır RuntimeException bir alt arasında tanıtımıyla Petek platform (API seviyesi 11) ilave edildi .
Kaynak:
Asenkron Android Programlama - İkinci Baskı - Helder Vasconcelos -
- 1. - akıllı mı yoksa aptal mı?
- 2. Sitem çalışmıyor mu, çalışmıyor mu yoksa bir hata mı var?
- 3. Swift: ViewModel bir yapı mı yoksa sınıf mı olmalı?
- 4. CloudKit güçlü bir şekilde tutarlı mı, yoksa tutarlı mı?
- 5. Jinja şablonu, çift tırnak mı yoksa tek tırnak mı yoksa çift tırnak mı, yoksa tek tırnak mı olarak yazıyorsunuz? "
- 6. HasMany ile Grails dinamik iskele: bir hata mı yoksa yanlış mı yapıyorum?
- 7. Matlab karşılaştırmasında bir hata mı?
- 8. İstisna avcısına ücretsiz bir alternatif var mı?
- 9. Bu düzenli ifade bir istisna atar mı?
- 10. Hata mı?
- 11. Bu GCC'de bir hata mı?
- 12. datetime.datetime var mı yoksa Yok
- 13. Sınıfın bir iç sınıf mı yoksa kullanıcı sınıfı mı olduğunu nasıl anlarsınız?
- 14. Bir değişkenin bir sayı mı, yoksa bir sayı mı olduğunu nasıl kontrol edebilirim?
- 15. CancellationToken ayarlandığında keyfi bir istisna atmak kötü bir uygulama mı?
- 16. Bu, Ruby'deki Array.fill yönteminde bir hata mı?
- 17. Bu, Google CheckBox ile bir hata mı?
- 18. Constexpr: nullptr ile karşılaştırma - Hata mı yoksa özellik mi?
- 19. Dosya bir klasörde var mı, yoksa bulunmuyor mu?
- 20. Bu, Java GZipInputStream sınıfındaki bir hata mı?
- 21. MathUtil.round() dosyasından hatalı sonuçlar alıyorum. Bu bilinen bir hata mı yoksa yanlış bir şey mi yapıyorum?
- 22. Gözlemlenebilir bir sıcak mı yoksa soğuk mu olduğunu kontrol etmek için bir yol var mı?
- 23. C#: Bir nesnenin özel bir sınıf mı yoksa yerel tür/.NET sınıfı mı olduğunu nasıl anlarsınız?
- 24. Bir dosya oluşturup açmak için herhangi bir yol var mı, yoksa başka türlü başarısız mı?
- 25. Bellek haritasına ikinci kez bir dosya mı, yoksa daha büyük bir boyuta mı?
- 26. Bir hata bildirimi, bir hata oluştuğunda bir veritabanı işlemini geri alır mı?
- 27. JVM yığınında çerçeve ayrılmış mı, yoksa ayrılmış mı?
- 28. OtomatikMapper büyük/küçük harfe duyarlı mı yoksa duyarsız mı?
- 29. Veritabanı sorgularımı oran sınırlaması mı yoksa azalt mı?
- 30. CLLocationManager güncellemelerini zorlama - yardımcı mı yoksa zarar mı veriyor?
Temmuz 2016 Kullandığınız hangi platform söylemeyi unutmuşum. –
"I/Koreograf (xxx): Atlanmış xxx kareleri! Uygulamanın ana iş parçacığı üzerinde çok fazla iş yapıyor olabilir." senin logcat içinde. Bu, sorununuzu bulmanıza yardımcı olabilir. – Christ
'Ne' gibi görünüyor – Kirby