Principio y optimización del proceso de renderizado del diseño.

CPU / GPU

Como "unidad central de procesamiento", la CPU no solo es responsable de los cálculos lógicos, sino que también debe realizar la gestión de la memoria y las operaciones de visualización. Por lo tanto, con la aparición de varias aplicaciones complejas, su rendimiento de transporte real se reducirá considerablemente.
Motivo del diseño: para mejorar la ruta de visualización de gráficos y los gráficos complejos, se diseñó la GPU.
Función principal: ayudar a la CPU a compartir la pantalla de gráficos

Visualización de diseño XML para flujo de pantalla

<TextView width="">
|
LayoutInflater加载进内存
|
CPU计算,处理成位图
|
CPU将图形交给GPU
|
GPU对图形进行删格化
|
显示器显示

FPS

12 fps: cuando el número de fotogramas es superior a unos 10-12 fotogramas por segundo, los ojos pensarán que es coherente;
24
fps: la grabación de películas con sonido es generalmente de 24 fotogramas por segundo 30 fps: primeros videojuegos dinámicos, generalmente alrededor de 30 fotogramas por segundo ;
60 fps: en el proceso de interacción con el teléfono móvil, se requieren el tacto y la retroalimentación, y se requieren 60 cuadros para lograr el efecto de no congelación.

Entonces, si no dibuja un marco en 16 ms, se sentirá atascado.

Proceso de carga de diseño

setContentView
|
LayoutInflater (inflar)
|
XmlResourceParser (getLayout)
|
infalte
|
ceateViewFromTag
|
tryCreateView
|
createView
|
Ver

Cómo optimizar

  • La CPU reduce el tiempo para convertir XML en objeto
  • GPU reduce el dibujo repetido

Concepto de sobregiro

La GPU dibuja una vez cada 16 ms. Si los gráficos que pasa la CPU repiten la posición, el usuario solo puede ver la pantalla superior, mientras que la pantalla inferior está oculta. Aunque la parte inferior del dibujo no es visible para el usuario, también ocupa Los recursos informáticos han provocado un derroche innecesario, en este caso, las esquinas están sobrecargadas;

Herramienta de visualización de sobregiros

"Depurar sobregiro de GPU" en las opciones de desarrollador

Optimización de sobregiro

Reducir los niveles de diseño

  • Si se necesita el fondo en el diseño;
  • Si es posible eliminar diseños redundantes;
  • Si la vista personalizada se ha recortado en consecuencia;
  • Si el diseño es lo suficientemente plano;
  • Utilice la etiqueta Merge para excluir una capa adicional de contenedores ViewGroup
  • Carga diferida del diseño con ViewStub

Método de optimización de carga de diseño

Cargar con código java

  • XML requiere mucho tiempo de carga debido a operaciones de E / S y operaciones de reflexión
  • Usa Java para estructurar el diseño
  • Gran cantidad de código, no realizable, no es fácil de mantener

La biblioteca X2C puede convertir el diseño xml en Java.
También se proporciona AsyncLayoutInflater en Androidx, que puede cargar el diseño de
forma asincrónica y usar AsyncLayoutInflater para cargar el diseño de forma asincrónica.

Supongo que te gusta

Origin blog.csdn.net/yanwenyuan0304/article/details/106299301
Recomendado
Clasificación