Para ver cuántos ANR está experimentando una determinada aplicación, inicie sesión en la consola del desarrollador. Android Vitals ofrece una agregación de informes ANR basados ​​en datos de sesiones diarias. Este umbral de tasa ANR es 0.47%. Cualquier valor superior se considerará “mal comportamiento” y afectará la lista de la aplicación en Google Play. También brinda opciones para verificar informes ANR individuales, como si el ANR es el mismo que otra aplicación en su tienda o no. Los usuarios también pueden ver qué aplicaciones están causando la mayor cantidad de ANR.

¿Cuál es la diferencia entre Crash y ANR?

Cuando Android falla, el usuario ve un cuadro de diálogo ANR que puede hacer que el teléfono se cuelgue o se congele. Si está tratando de corregir este error, puede verificar el volcado de subprocesos que Android almacena cuando ocurre un ANR. El volcado de subprocesos generalmente almacena el seguimiento de la pila del subproceso principal. Se encuentra en el directorio /data/anr/ y se puede encontrar usando el comando logcat.

¿Cuál es la diferencia entre Crash y ANR?¿Cómo se evita ANR?¿Qué es ANR Google Play?¿Por qué ocurre ANR en Android?¿Cómo se activa ANR?¿Cómo leo los registros de ANR?¿Qué son las fugas de memoria en Android?

ANR ocurre cuando el subproceso de la interfaz de usuario de una aplicación no puede responder en cinco segundos. Si el proceso dura más de cinco segundos, Android muestra un cuadro de diálogo emergente y el usuario puede esperar a que la aplicación responda o forzar el cierre. ANR es tan malo como un bloqueo, ya que brinda a los desarrolladores contexto para solucionar el error. Pero ANR es mucho peor, ya que significa que su aplicación tarda demasiado en responder. La razón por la que su aplicación podría no responder es porque otro hilo la está bloqueando. Si un subproceso utiliza bloqueos, semáforos, grupos de recursos o mecanismos de exclusión mutua, podrían bloquear el subproceso principal. Debe evaluar cualquier bloqueo de la aplicación en los recursos que necesita el subproceso principal. De lo contrario, hará que la aplicación se bloquee. Si alguna vez ha visto un bloqueo en su dispositivo Android, es probable que haya sido causado por ANR.

¿Cómo evitar ANR?

¿Cómo evitar los diálogos ANR de Android? Hay algunas maneras de evitar los ANR. Una forma es trabajar en un subproceso que tenga un contexto relacionado con la interfaz de usuario. Otra forma es usar StrictMode, que detecta cualquier uso accidental de disco o red. Este enfoque no es tan efectivo como habilitar el registro completo de ANR, pero puede ayudarlo a determinar qué código está causando el problema y qué puede hacer para resolverlo. Si bien los informes de fallas brindan información sobre ANR, la mayoría de las veces, estos informes son inútiles. En la mayoría de los casos, Google informa los ANR solo cuando el usuario recibe un cuadro de diálogo de finalización y el hilo principal está bloqueado durante al menos cinco segundos. Por lo tanto, si quiere estar seguro de que su aplicación no está causando ANR, debe consultar el informe ANR en el sitio de Android Vitals. También hay una serie de grupos relacionados con ANR que puede usar para comprender por qué su aplicación obtiene ANR. Otra forma de evitar los cuadros de diálogo ANR es solucionar el problema en el código de su aplicación. Android tiene algunas reglas estrictas sobre los mensajes ANR, que se muestran en un cuadro de diálogo emergente cuando la aplicación no responde durante un largo período de tiempo. Los cuadros de diálogo ANR suelen ser causados ​​por aplicaciones que realizan demasiado en el subproceso principal, por lo que debe asegurarse de que su aplicación realice todas las operaciones de base de datos y redes en subprocesos separados. Si esto no es posible, use IntentService para aliviar la presión del subproceso de la interfaz de usuario. También ayuda a definir tiempos de espera para cálculos complejos y llamadas de servicio web.

¿Qué es un ANR Google Play?

Los ANR, o la aplicación que no responde a la entrada del usuario, pueden aparecer en dispositivos Android. Si está experimentando ANR, es posible que deba forzar el cierre de su aplicación. Dependiendo del sistema operativo, puede encontrar un ANR de forma selectiva o todo el tiempo. Para resolver el problema, siga estos pasos. Identifique la fuente de la ANR. Aquí hay algunas causas comunes. Echemos un vistazo a cada uno. Los usuarios notifican los ANR cuando experimentan bloqueos u otros problemas. Estos errores se registran en la carpeta de la aplicación. También pueden aparecer en el hilo principal de su dispositivo. En algunos casos, la aplicación simplemente dejará de responder, pero en otros casos, un controlador de fallas puede detectarlo. Un ANR puede ser activado por una aplicación no autorizada, una aplicación maliciosa o una aplicación mal codificada. Debe buscar una versión estable de su aplicación para determinar si hay un error en su aplicación. Los ANR se registran en el sistema operativo Android cuando la aplicación se distribuye en Google Play. Los desarrolladores de Android pueden consultar los datos de ANR en la sección Android Vitals de Developer Console. Curiosamente, estos datos no contienen información personal, pero sí incluyen la versión de su aplicación y la versión de Android. También registra datos de actividad, que incluyen el proceso actual y cuántos usuarios iniciaron la aplicación. Una vez que haya revisado los ANR, puede corregir cualquier error que haya encontrado o mejorar el rendimiento de su aplicación.

¿Por qué sucede ANR en Android?

Si se pregunta por qué ocurre ANR en Android, no está solo. Este problema es el resultado del sistema ocupado de Android. El sistema observa los tiempos de respuesta de los componentes del proceso de solicitud, y si uno de estos componentes no responde de manera oportuna, el sistema ANR emitirá una advertencia. Además de esto, el sistema ocupado puede evitar que el subproceso principal se programe, lo que puede provocar un alto nivel de E/S y fluctuaciones frecuentes de la memoria. Para evitar que el sistema presente este problema, siempre debe asegurarse de que el diseño de su aplicación responda. En muchos casos, ANR ocurre cuando el subproceso principal no puede completar su tarea debido a un bloqueo del subproceso de trabajo. Cuando esto sucede, el subproceso principal debe esperar a que el subproceso de trabajo termine su trabajo antes de que pueda reanudarse. Según la longitud del subproceso de trabajo, esto puede tardar más de cinco segundos. Cuanto más tiempo se ejecute el subproceso de trabajo, mayor será la posibilidad de que se produzca un ANR. Afortunadamente, la mayoría de estos casos se pueden evitar, pero siempre debe verificar su código para asegurarse de que no esté causando un punto muerto.

¿Cómo se activa ANR?

Si está creando una aplicación en Android, es posible que haya encontrado un cuadro de diálogo ANR mientras se ejecuta la aplicación. Los ANR pueden afectar la experiencia del usuario, el ranking de búsqueda o las promociones de Google Play. También pueden ser causados ​​por operaciones de larga duración. Determinar la causa del ANR puede ser complicado, pero un buen informe puede ayudarlo a identificar el problema. Siga leyendo para aprender cómo activar Android ANR. (Actualizado: una nueva versión de este artículo ahora incluye información adicional). Para reproducir el problema localmente, puede consultar los registros ANR de Android. Estos registros contienen información sobre todos los subprocesos de la aplicación, incluidos los que estuvieron involucrados en el ANR. Android almacena esta información en un directorio /data/anr/. Puede encontrar este nombre de archivo usando un comando logcat. Si el error persiste, intente reinstalar la aplicación. De lo contrario, puede intentar reproducir el problema en una versión diferente de Android.

¿Cómo leo los registros ANR?

¿Cómo leo los registros ANR de Android para identificar problemas de rendimiento? Android muestra cuadros de diálogo ANR cada vez que su aplicación tarda demasiado en procesar un mensaje de difusión. No siempre puede ver estos subprocesos de la interfaz de usuario, pero aún pueden estar causando problemas de rendimiento. Para diagnosticar estos problemas, puede abrir Traceview y ver los rastros de las aplicaciones en ejecución. Esto le permitirá identificar los lugares donde el hilo principal está ocupado. Los informes ANR a menudo contienen información incorrecta. Por ejemplo, si encuentra ANR mientras captura un video, es posible que no vea el error. Stacktraces captura el momento exacto en que su sistema maneja una señal SIGQUIT, por lo que es posible que la causa real no se haya atascado el tiempo suficiente para capturarla. Si su hipótesis es sólida, intente recrear el error localmente. Si el problema persiste, puede intentar reducir el área de aplicación, la interacción en cuestión y el modo estricto. Además de registrar los detalles del ANR, Android Studio también registra los datos del bloqueo en un archivo txt en el dispositivo. También puede usar Crashlytics para analizar la frecuencia y el hilo donde ocurrió el bloqueo. Si ve muchos registros ANR, es mejor mover todas las operaciones de IO a un subproceso de trabajo. Usar un tamaño de búfer de registrador más alto es mejor que usar uno más pequeño.

¿Qué son las fugas de memoria en Android?

Si bien las fugas de memoria de Android pueden no causar mucho daño a su aplicación, pueden afectar seriamente su rendimiento. Las fugas de memoria se producen cuando su aplicación usa más memoria que la memoria asignada. El marco de trabajo de Android desencadenará más eventos de GC si ve que la aplicación se está quedando sin memoria. Estos eventos harán que su aplicación se retrase e incluso se bloquee. Sin embargo, puede evitar este problema tomando medidas para optimizar la gestión de su memoria. Para averiguar si su aplicación está usando más memoria de la que necesita, debe verificar la memoria del montón. Cuando una aplicación usa más memoria de la que puede asignar, eventualmente se quedará sin memoria y experimentará OutOfMemoryError. Las fugas de memoria se identifican fácilmente mediante una herramienta llamada Memory Profiler. Memory Profiler le permite capturar un volcado de montón, forzar la recolección de elementos no utilizados y realizar un seguimiento de la asignación de memoria. 1.) Centro de ayuda de Android 2.) Android-Wikipedia