Cómo probar el rendimiento de la vista personalizada
Quiero probar el rendimiento de representación de la IU de mi componente personalizado. Utilicé el siguiente caso de prueba para comprobar el rendimiento de la representación.
private long getLayoutTime(int layoutRes) {
final Context targetContext = getInstrumentation().getTargetContext();
final LayoutInflater layoutInflater = LayoutInflater.from(targetContext);
final long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000; i++) {
final View view = layoutInflater.inflate(layoutRes, null);
view.setLayoutParams(new ViewGroup.LayoutParams(0, 0));
view.measure(View.MeasureSpec.makeMeasureSpec(1000, View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
final int measuredHeight = view.getMeasuredHeight();
final int measuredWidth = view.getMeasuredWidth();
view.layout(0, 0, measuredWidth, measuredHeight);
}
return System.currentTimeMillis() - startTime;
}
Usando este código, puedo probar el tiempo de renderizado del diseño. Así que cambié el diseño del diseño para un mejor rendimiento. Ahora estoy creando una clase de vista personalizada con múltiples diseños y componentes como imágenes, vistas de texto, etc. Adjuntaré la clase en tiempo de ejecución y los componentes se crearán en el tiempo de ejecución según la respuesta del servidor. No adjuntaré este componente personalizado en XML. Ahora quiero probar el rendimiento de renderizado de esta vista personalizada. Sugierame alguna herramienta o alguna forma de calcular el tiempo de renderizado de la interfaz de usuario para la vista personalizada.
Mi imagen de Profiler.

Respuestas
Puede medir fácilmente el rendimiento utilizando el perfilador de herramientas incorporado de Android Studio (en el panel inferior izquierdo). importante: el rendimiento de la vista del cliente depende de un dispositivo en ejecución aquí hay una muestra que he probado para redmi 7a
dispositivo: redmi 7a RAM: 2GB
private fun startTest() {
for (x in 0..10000) {
val textview = TextView(this)?.apply { text = "Dummy Text $x" }
mLinearLayout?.addView(textview)
}
}
- ejecutar un proyecto
- inicie el generador de perfiles, espere hasta que el gráfico se normalice
- en el botón Haga clic en startTest (), verá que el gráfico se volvió normal a alto
- seleccione el área que cubre el área alta del gráfico y vea la hora de inicio y la hora de finalización
- usa una calculadora simple y mide la diferencia
el resultado de mi caso de prueba: agregar textview 10000 veces en linearlayout toma 32.411s (información del dispositivo dada arriba)
