En Xamarin.Forms, hay muchas formas de realizar el diseño pero sin saberlo sacrificamos el rendimiento de nuestra aplicación. Usamos componentes de formas poco adecuadas o para funcionalidades que no son las correctas.
Optimizar siempre es bueno
Xamarin.Forms 2 hizo especial incapie en la mejora del moto de diseño optimizando al máximo posible el coste de renderizado de los componentes.
A continuación voy a exponer unos casos típicos de los elementos más comunes que tiene una alta tasa de penalización de rendimiento. Hay veces que no queda más remedio que usarlas si queremos hacer ese diseño concreto pero siempre es importante saber y valorar el coste que nos está generando.
Así se usan
Margin
El uso de esta propiedad nos ayuda a reducir el espacio de los diseños. Usar esta propiedad ayuda a la creación de menos vistas ajustadas.
Pon un Grid siempre que puedas
Crear múltiples lineas o columnas usando varios StackLayout no es buena idea. Trata de poner un Grid siempre que puedas. Cada StackLayout tendrá que calcular su tamaño de renderizado de forma individual. Un Grid lo hará una única vez para toda la pantalla.
Metidos en el Grid no tenemos que olvidar el coste de establecer el tamaño de las lineas o las columnas con el parametro auto. Debemos de tratar de usarlo el menor numero de veces posible. Cada vez que el motor se encuentre la palabra auto deberá realizar cálculos de diseño adicionales. Establecer un tamaño fijo es la mejor opción pero no siempre es sencillo, es esos casos, como alternativa tenemos la posibilidad de ocupar un espacio proporcional y simplificar los cálculos de diseño.
Aquí puedes ver mas información sobre vistas y capas.
RelativeLayout
Esta capa no es recomendada para ninguna situación, trata de evitarla a toda costa. El resultado principal que obtendremos sera un alto costo de CPU para calcular el renderizado de pantalla.
AbsoluteLayout
Aunque es una capa que también genera cierto coste de CPU, al usar AbsoluteLayout sobre todo tenemos que tener en cuenta qué debemos evitar el uso de la propiedad AbsoluteLayout.AutoSize.
Aunque no son capas muy recomendables de usar puedes profundizar en su uso con el artículo RelativeLayout y AbsoluteLayout (XF.B-23)
Layout
No uses ninguno de los metodos de la clase Layout, estos generán costosos calculos de diseño. En su lugar posiblemente se podrá conseguir un comportamiento similar estableciendo las propiedades TranslationX y TranslationY
Label
No actualice ninguna instancia Label con más frecuencia de la necesaria, dado que el cambio de tamaño de la etiqueta puede producir la necesidad de recalcular de la pantalla completa.
VerticalOptions y HorizontalOptions
Ambas propiedades hay que evitarlas en lo mayor posible. Los valores predeterminados LayoutOptions.Fill y LayoutOptions.FillAndExpand permiten una optimización del diseño. Cambiar estas propiedades tiene un coste alto de CPU y memoria.
Después de estos pequeños trucos, no olvides que puedes dejar tu propuesta sobre los temas que más te gustan o solicitar ayuda en esa tarea que quieres realizar con Xamarin. Solo tienes que rellenar el formulario de propuesta.