Generación y análisis de problemas de Android ANR

Razones para ANR

1. ANR (Aplicación no respuesta La aplicación no responde).
2. Si el subproceso de la interfaz de la aplicación de Android se bloquea durante demasiado tiempo, se activará un error de "la aplicación no responde" (ANR). Si la aplicación está en primer plano, el sistema mostrará un cuadro de diálogo al usuario , como se muestra en la figura siguiente. El cuadro de diálogo ANR proporcionará al usuario la opción de salir por la fuerza de la aplicación.
Inserte la descripción de la imagen aquí
3. ¿Cuándo se
activará InputDispatching Timeout? No se puede responder a eventos táctiles de pantalla o eventos de entrada de teclado en 5 segundos.
BroadcastQueue Timeout: cuando se ejecuta la función onReceive () de la transmisión en primer plano (BroadcastReceiver), el procesamiento no se completa en 10 segundos y el fondo es de 60 segundos.
Tiempo de espera del servicio: el servicio en primer plano está dentro de los 20 segundos y el servicio en segundo plano no se ejecuta en 200 segundos.
Tiempo de espera de ContentProvider: la publicación de ContentProvider no finaliza en 10 segundos.

Diagnóstico ANR

1. Varios modos ANR comunes

  • La aplicación realiza operaciones que involucran E / S muy lentamente en el hilo principal.
  • La aplicación realiza cálculos a largo plazo en el hilo principal.
  • El hilo principal está realizando una llamada de enlace sincrónica a otro proceso, y este último tarda mucho en volver.
  • El subproceso principal está en un estado bloqueado, esperando bloques sincronizados para operaciones largas que ocurren en otro subproceso.
  • Se produce un interbloqueo entre el subproceso principal y otro subproceso en el proceso o mediante una llamada de enlace. El hilo principal no solo está esperando la finalización de la operación larga, sino también en un estado de interbloqueo.
  • El tiempo de GC es demasiado largo, etc.

2. Habilite el cuadro de diálogo ANR en segundo plano
Solo cuando Mostrar todos los ANR esté habilitado en las opciones de desarrollador del dispositivo, Android mostrará el cuadro de diálogo ANR para las aplicaciones que tardan demasiado en procesar los mensajes de difusión. Por lo tanto, el sistema no siempre muestra al usuario un cuadro de diálogo ANR en segundo plano, pero la aplicación aún puede experimentar problemas de rendimiento.
3. Habilite el modo estricto para ser llamado en onCreate en la aplicación

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() //
        .detectAll() 
        .penaltyLog() 
        .penaltyDeath() 
        .build());

4.TraceView
Puede utilizar TraceView para obtener la información de seguimiento de la aplicación en ejecución al ver el caso de uso y averiguar dónde está ocupado el hilo principal.
Puede utilizar la opción de desarrollador "Generar informe de errores" en el dispositivo o el comando adb bugreport en la máquina de desarrollo para obtener el informe de errores desde el dispositivo físico.

adb root
adb shell ls /data/anr
adb pull /data/anr/<filename> /Desktop/anr

También podemos ver el dispositivo directamente en el Explorador de archivos del dispositivo después de conectar el dispositivo. Como se muestra en la figura a continuación,
Inserte la descripción de la imagen aquí
al obtener el nombre del archivo de seguimiento debajo de anr o al abrir la parte superior, aparecerá el tiempo de ocurrencia, encuentre el tiempo aproximado cuando ocurrió el ANR y luego busque el comienzo en el registro El registro relacionado con "main" se muestra en la siguiente figura. La figura muestra el problema que utilicé para probar la prueba nativa de Xcrash. El mismo método de análisis es encontrar main y luego analizar la siguiente pila:

Inserte la descripción de la imagen aquí

Evite los problemas de ANR

Trate de evitar operaciones que consumen mucho tiempo en el hilo principal (hilo de la interfaz de usuario).

El análisis Anr oficial de Android incluye análisis Systrace

Es mejor explicar los parámetros en el archivo de seguimiento.

Supongo que te gusta

Origin blog.csdn.net/u011148116/article/details/106759796
Recomendado
Clasificación