Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Es "ANR" una excepción o un error o qué?

¿Es la ANR una excepción, un error o qué? ¿Se puede capturar en una estructura try{} catch(){} ?

2 Solutions collect form web for “¿Es "ANR" una excepción o un error o qué?”

ANR (aplicación no responde) no es exactamente un error. Se muestra cuando su aplicación es muy lento y toma mucho tiempo para responder, por lo que el usuario espera. El usuario no apreciará si su aplicación les hace esperar mucho tiempo. Por lo tanto, el marco de Android ofrece al usuario una opción de cerrar su aplicación. http://developer.android.com/guide/practices/design/responsiveness.html

Esto ocurre cuando está realizando operaciones largas en el subproceso principal. El sistema no puede procesar las interacciones del usuario durante este período ya que el hilo principal está bloqueado. La solución es hacer las operaciones pesadas en un hilo de trabajo y mantener el hilo principal libre.

El cuadro de diálogo No responde (ANR)

Como se puede imaginar, si el hilo principal está ocupado con un cálculo pesado o la lectura de datos desde una toma de red, no puede responder inmediatamente a la entrada del usuario, como un toque o golpe.

Una aplicación que no responde rápidamente a la interacción del usuario se sentirá indiferente-cualquier cosa más de un par de cientos de milisegundos de retraso es notable. Este es un problema tan pernicioso que la plataforma Android protege a los usuarios de las aplicaciones que hacen demasiado en el hilo principal.

Aviso :

Si una aplicación no responde a la entrada del usuario dentro de veinte segundos, el usuario verá el cuadro de diálogo No responde la aplicación (ANR) y se le ofrecerá la opción de salir de la aplicación.

La siguiente captura de pantalla muestra un diálogo Android ANR típico:

Introduzca aquí la descripción de la imagen

Android trabaja duro para sincronizar los redibujos de la interfaz de usuario con la frecuencia de actualización del hardware. Esto significa que pretende redibujar a una velocidad de 60 fotogramas por segundo, es decir, sólo 16,67 ms por fotograma. Si trabajamos en el hilo principal que lleva cerca de 16 ms, nos arriesgamos a afectar a la velocidad de fotogramas, lo que resulta en animaciones jank-tartamudez, desplazamiento espasmódico, y así sucesivamente.

Idealmente, por supuesto, no queremos dejar caer un solo marco. Jank, la falta de respuesta, y especialmente la ANR, ofrecen una experiencia de usuario muy pobre, lo que se traduce en críticas negativas y aplicaciones impopulares. Una regla para vivir cuando la construcción de aplicaciones de Android es: no bloquear el hilo principal!

Aviso :

Android proporciona una configuración de modo estricto útil en las Opciones de desarrollador de cada dispositivo, que parpadeará en la pantalla cuando las aplicaciones realicen operaciones largas en el subproceso principal.

Se añadió más protección a la plataforma en Honeycomb (API nivel 11) con la introducción de una nueva clase de excepción, NetworkOnMainThreadException, una subclase de RuntimeException que se activa si el sistema detecta actividad de red iniciada en el subproceso principal.

Fuente :

Asynchronous Android Programming – Segunda edición – Helder Vasconcelos – Julio 2016

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.