Qué orden de diseños anidados es más eficiente en Android

Creo que nunca he anidado más de tres niveles de Layouts ( RelativeLayout , LinearLayout , FrameLayout ) en Android. No estoy pensando en los elementos de lista que también utilizan un diseño personalizado para ListView pero sólo diseños normales para una actividad.

Al punto, sin embargo, estaba charlando con otro desarrollador acerca de las disposiciones de anidación para un determinado diseño que estábamos discutiendo y parecía pensar que incluso unos pocos diseños anidados realmente ralentizó el rendimiento. Me imaginé que hay algo de verdad, pero no puede ser mucho.

¿Alguien tiene un enfoque más experto en esto? ¿Alguna entrada? ¿Opinión?

Gracias.

ACTUALIZACIÓN para aquellos que se encuentran en Google: La primera respuesta a continuación es un gran recurso. Parece un montón y la gente parece saltarse las respuestas como que, pero por favor, echa un vistazo. Muy valioso.

Supongo que no hay una bala de plata para esto, pero te daré algunos consejos:

1) Trate de usar las herramientas proporcionadas con el androide sdk.

layoutopt a analizar mis diseños con hierarchyviewer y layoutopt tratando de reducir la cantidad de View utilizada y la altura del árbol.

2) Lea los artículos de Romain Guy acerca de <include> , <merge> y <ViewStub> Estas etiquetas no se usan a menudo, pero proporcionan una gran velocidad "hacks".

3) Use dmtracedump y mida cuánto tiempo tarda en inflar una vista.

Puede comprobar cuánto tiempo tarda en inflar una vista. Obtener un inflado y medir cuánto tiempo se tarda en inflar cada una de sus opciones.

No he hecho ninguna prueba adecuada para apoyar esto, todavía, creo que androide fue el diseño para utilizar layouts de anidación con el fin de proporcionar UI adecuada para el usuario, su prácticamente la única manera de apoyar múltiples pantallas por lo que no me preocuparía sobre lo que Es el más eficiente, sólo que se ve como debería.

Cualquier otro tipo de mala práctica de programación probablemente tendría un mayor efecto en la eficiencia que el anidamiento de diseño.

La diferencia será mucho más importante cuando se utiliza dicho diseño para cada elemento de un ListView por ejemplo. Esperemos que este sencillo ejemplo le mostró que conocer su diseño es la mejor manera de aprender a optimizar su interfaz de usuario.

No se puede dar una respuesta completa, pero Romain Guy ha declarado específicamente que RelativeLayouts anidados tienen un tiempo exponencial para la medición.

Ver vídeo aquí a las 38:08 marca

En realidad todos ellos se basan en la misma clase .. pero sería mejor usar de acuerdo a mí como sigue:

 <RelativeLayout> <LinearLayout> <at> here we just create nested more as we wont></at> </LinearLayout> </RelativeLayout> 
  • Disminuir la velocidad de View Pager en android
  • ¿Cómo mejorar el rendimiento de la aplicación con un mapa de Google en el construido con sencha touch y phoneGap?
  • AvailableProcessors () devuelve 1 para los teléfonos dualcore
  • Rendimiento de Android ContentProvider
  • Eficiencia de getDrawable (): ¿es el Drawable almacenado en caché por el framework?
  • Cargando datos de forma eficaz en RecycleView
  • En Android; ¿Es mejor aplicar un OnClickListener o usar android: onClick?
  • Timertask o manejador
  • Android: ¿Hay alguna manera de acelerar canvas.drawBitmap?
  • Ionic: transiciones lentas en la aplicación android instalada
  • Dispositivos Android que no tienen JIT
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.