¿Qué es ANR en Android y cómo los desarrolladores sabemos dónde sucedió exactamente ANR en nuestra aplicación?

ANR significa “Aplicación que no responde” que ocurre cuando la aplicación no responde durante 5 segundos.

El desarrollador puede conocer fácilmente mediante registros qué línea de código arrojó la excepción ANR.

Como tal, aquí hay algunos consejos adicionales más allá de lo que debe hacer para evitar ANR y hacer que su aplicación parezca receptiva para los usuarios:

  • Si su aplicación está trabajando en segundo plano en respuesta a la entrada del usuario, muestre que se está progresando (como con una barra de progreso en su interfaz de usuario).
  • Para juegos específicamente, haga cálculos para movimientos en un hilo de trabajo.
  • Si su aplicación tiene una fase de configuración inicial que requiere mucho tiempo, considere mostrar una pantalla de presentación o mostrar la vista principal lo más rápido posible, indique que la carga está en progreso y complete la información de forma asincrónica. En cualquier caso, debe indicar de alguna manera que se está progresando, para que el usuario no perciba que la aplicación está congelada.
  • Use herramientas de rendimiento como Systrace y Traceview para determinar los cuellos de botella en la capacidad de respuesta de su aplicación.

ANR es Aplicación que no responde, cuando la aplicación no responde durante 5 segundos, el sistema operativo Android arroja ANR.

Los desarrolladores lo conocen en los registros. El uso del desarrollador de registros puede averiguar exactamente qué línea de código arrojó la excepción.

Para más información vaya a este enlace.

La aplicación no responde … generalmente ocurre cuando hay una excepción no controlada en el código.

Puede rastrear los registros en el estudio de Android durante la fase de desarrollo.

Pero si se enfrenta a un bloqueo en una compilación de producción donde generalmente los registros y la depuración están deshabilitados, en tal caso, debe integrar crashlytics en la aplicación, que recopilará el bloqueo en tiempo de ejecución.