Optimización bloqueada de Android

definición de cartón

Si se encuentra dentro de un ciclo Vsync (16,6 ms en una pantalla de 60 HZ), de acuerdo con el orden de ejecución de toda la visualización del último cuadro, el dibujo del subproceso de la interfaz de usuario de la aplicación, la representación del subproceso RenderThread, la composición de la capa de SurfaceFlinger/HWC y la pantalla final Muestra que si no se completan todas estas acciones, el contenido del cuadro anterior se mostrará en la pantalla, es decir, el cuadro se caerá y el ojo humano puede sentir que la imagen se congela.


Herramienta de monitoreo fuera de línea Caton Monitoring

BlockCanary: 动态检测消息执行耗时。

Con base en el mecanismo de mensajes, configure la impresora en el Looper, controle la operación entre el despachador y el final, y descargue la información de la pila y el dispositivo para cumplir con el umbral que requiere mucho tiempo, y muestre la información atascada en forma de notificación. para analizar.
inserte la descripción de la imagen aquíLos dos pasos principales son registrar el tiempo T1 antes de llamar a msg.target.dispatchMessage(msg) para distribuir el mensaje y registrar el tiempo T2 después de llamar a msg.target.dispatchMessage(msg) para distribuir el mensaje. la configuración El umbral de bloqueo imprimirá la pila de llamadas del método actual y mostrará otras indicaciones relacionadas o registros de impresión;
blockcanary hace uso completo del mecanismo de bucle y ejecuta el println de la impresora antes y después de ejecutar dispatchMessage en el método de bucle de MainLooper para generar y proporciona un método Configurar la impresora. Al analizar la diferencia de tiempo entre antes y después de la impresión y compararla con el umbral, se puede juzgar si está atascado.

Crear AppBlockCanaryContext:

class AppBlockCanaryContext : BlockCanaryContext() {
    
    
}

Inicialice blockCanary en la aplicación:

BlockCanary.install(this, AppBlockCanaryContext()).start()

BlockCanary registrará diversa información cuando se produzca una congelación (establecida por getConfigBlockThreshold de MonitorEnv), la enviará a un archivo en el directorio de configuración y aparecerá una notificación en la barra de mensajes (se puede cerrar).

La información de volcado incluye:

Información básica: etiqueta del paquete de instalación, modelo, nivel de API, uid, número de núcleos de CPU, nombre del proceso, memoria, número de versión,
etc.
información de CPU de tiempo de finalización: si la CPU está ocupada durante el período de tiempo, la proporción de CPU del sistema/CPU de la aplicación durante el período de tiempo
y la proporción de E/S a uso de CPU .

Acceso de Didi Dokit
https://xingyun.xiaojukeji.com/docs/dokit#/intro
inserte la descripción de la imagen aquí Detección de velocidad de fotogramas: la información de velocidad de fotogramas proporciona una función de vista de forma de onda, lo que hace que la tendencia de la monitorización de la velocidad de fotogramas sea más obvia.

inserte la descripción de la imagen aquíDetección de CPU: la información de uso de la CPU proporciona una función de visualización de gráficos de forma de onda, lo que hace que la tendencia de la supervisión de la CPU sea más vívida.

inserte la descripción de la imagen aquíDetección de Caton: cuando estamos desarrollando aplicaciones, podemos encontrarnos con una situación de Caton, que a menudo se ignora, y la probabilidad de que Caton ocurra cuando reaparece es bastante pequeña. La función de congelación nos ayuda a registrar la congelación que se produce en la aplicación, bloquear el momento en que se produce la congelación en la aplicación e imprimir la pila de llamadas de código correspondiente.
inserte la descripción de la imagen aquíHerramienta de monitoreo en línea
https://www.tingyun.com/tingyun-apm

Los productos Keynote Tingyun APM (Administración del rendimiento de la aplicación) pueden proporcionar monitoreo del rendimiento a nivel de código y localizar fallas rápidamente, son compatibles con el marco OpenTelemetry para lograr una recopilación completa y admiten el control y la supervisión del rendimiento de la aplicación bajo la arquitectura de microservicio.

Flujo de trabajo general:
1. Primero recopile datos en el cliente (Android, iOS, Web, etc.
)
, luego visualice los datos para que los usen los usuarios.

El principio de Android APM es realmente muy simple y se puede resumir en una frase:

De acuerdo con el principio de empaquetado, en el proceso de conversión de clase a dex, llame a gradle transform api para atravesar archivos de clase, modifique bytecode con Javassist, ASM y otros marcos, e inserte nuestro propio código para realizar estadísticas de datos de rendimiento. Todos los procesos anteriores se completan en tiempo de compilación.

Supongo que te gusta

Origin blog.csdn.net/qq_24252589/article/details/131343448
Recomendado
Clasificación