Android xml vs java layouts performance

Android SDK ofrece a los desarrolladores la posibilidad de escribir diseños en archivos xml o directamente en código Java. He leído sobre esto y todos dicen que xml es más fácil de mantener y más sencillo de escribir, pero son estáticos. De lo contrario, el diseño de Java es dynamic, pero nadie comenta problemas de rendimiento. Lo único que encontré sobre el rendimiento fue que el diseño de anidación tiene un impacto negativo en el rendimiento. En lugar de escribir un diseño nested, es mejor personalizarlo. Hasta aquí todo bien ;).

¿Qué hay de diseño de diseño? xml o código java? ¿Cómo se analizan los archivos xml mi Android, en tiempo de ejecución o tiempo de comstackción? Incluso si se analizan en tiempo de comstackción, se deben usar en tiempo de ejecución. Entonces, ¿cuál será más rápido para declarar RelativeLayout en xml o para declararlo en el método onCreate?

Un diseño define la estructura visual de una interfaz de usuario, como la interfaz de usuario para un widget de actividad o aplicación. Puede declarar un diseño de dos maneras:

  • Declarar elementos de IU en XML . Android proporciona un vocabulario XML sencillo que corresponde a las clases y las subclases de View, como las de widgets y diseños.

  • Crear una instancia de elementos de diseño en tiempo de ejecución. Su aplicación puede crear objetos View y GroupView (y manipular sus propiedades) programáticamente.

El marco de Android le brinda la flexibilidad de utilizar uno o ambos de estos métodos para declarar y administrar la IU de su aplicación. Por ejemplo, puede declarar los diseños predeterminados de su aplicación en XML, incluidos los elementos de pantalla que aparecerán en ellos y sus propiedades. A continuación, podría agregar código en su aplicación que modificaría el estado de los objetos de la pantalla, incluidos los declarados en XML, en tiempo de ejecución.

El complemento ADT para Eclipse ofrece una vista previa del diseño de su XML: con el archivo XML abierto, seleccione la pestaña Diseño.

También debe probar la herramienta Visor de jerarquía para depurar diseños: revela valores de propiedades de diseño, dibuja estructuras alámbricas con indicadores de relleno / margen y vistas representadas completas mientras depura en el emulador o dispositivo.

La herramienta layoutopt le permite analizar rápidamente sus diseños y jerarquías en busca de ineficiencias u otros problemas.

The advantage to declaring your UI in XML is that it enables you to better separate the presentation of your application from the code that controls its behavior. Your UI descriptions are external to your application code, which means that you can modify or adapt it without having to modify your source code and recompile. For example, you can create XML layouts for different screen orientations, different device screen sizes, and different languages. Additionally, declaring the layout in XML makes it easier to visualize the structure of your UI, so it's easier to debug problems. 

Cuando comstack su aplicación, cada archivo de diseño XML se comstack en un recurso de Vista. Debe cargar el recurso de diseño desde su código de aplicación, en su implementación de callback Activity.onCreate() . Hazlo llamando a setContentView() , pasándole la referencia a tu recurso de diseño en la forma de:

Creo que es demasiado solo visite este enlace http://developer.android.com/guide/topics/ui/declaring-layout.html y obtenga más información ..

Un factor principal para decidir dónde declarar un componente de UI es su comportamiento durante el ciclo de vida de la aplicación. Si es estático, declararía todos los atributos necesarios en XML, si cambia según la interacción del usuario, tendría que implementarlo en la actividad.

Apostaría por XML tanto como sea posible por los beneficios mencionados anteriormente, como la coherencia, una mejor gestión para varios tamaños de pantalla, localización, gestión de recursos, etc.

No es muy diferente en cuanto a rendimiento, ya que su archivo xml de recursos también se precomstackrá utilizando herramientas aapt. De modo que la conversión XML pasará a los archivos de recursos de origen y junto con los archivos de origen de Java se comstackrán en los archivos de clase de Java. Por lo tanto, también es lógico que el rendimiento solo sea similar porque, en última instancia, ambos se comstackrán y la memoria para ambos se asignará en tiempo de ejecución. También comprobé con mi aplicación de muestra que realizaba vistas similares a través de XML y vía Java, y mientras los perfilaba, descubrí que el renderizado de Vistas tarda aproximadamente el mismo tiempo. 🙂