Xamarin.Forms Representadores rápidosXamarin.Forms Fast Renderers

Tradicionalmente, la mayoría de los representadores de control originales en Android se componen de dos vistas:Traditionally, most of the original control renderers on Android are composed of two views:

  • Control nativo, como Button o TextView .A native control, such as a Button or TextView.
  • Contenedor ViewGroup que controla algunos de los trabajos de diseño, el control de gestos y otras tareas.A container ViewGroup that handles some of the layout work, gesture handling, and other tasks.

Sin embargo, este enfoque tiene una implicación de rendimiento en que se crean dos vistas para cada control lógico, lo que da como resultado un árbol visual más complejo que requiere más memoria y más procesamiento para representarse en la pantalla.However, this approach has a performance implication in that two views are created for each logical control, which results in a more complex visual tree that requires more memory, and more processing to render on screen.

Los representadores rápidos reducen los costos de inflación y representación de un Xamarin.Forms control en una sola vista.Fast renderers reduce the inflation and rendering costs of a Xamarin.Forms control into a single view. Por lo tanto, en lugar de crear dos vistas y agregarlas al árbol de vista, solo se crea una.Therefore, instead of creating two views and adding them to the view tree, only one is created. Esto mejora el rendimiento al crear menos objetos, lo que, a su vez, significa un árbol de vista menos complejo y menos uso de memoria (lo que también da lugar a menos pausas de recolección de elementos no utilizados).This improves performance by creating fewer objects, which in turn means a less complex view tree, and less memory use (which also results in fewer garbage collection pauses).

Los representadores rápidos están disponibles para los siguientes controles en Xamarin.Forms en Android:Fast renderers are available for the following controls in Xamarin.Forms on Android:

Funcionalmente, estos representadores rápidos no son diferentes a los representadores heredados.Functionally, these fast renderers are no different to the legacy renderers. A partir de Xamarin.Forms 4,0 y versiones posteriores, todas las aplicaciones que tienen como destino FormsAppCompatActivity usarán estos representadores rápidos de forma predeterminada.From Xamarin.Forms 4.0 onwards, all applications targeting FormsAppCompatActivity will use these fast renderers by default. Los representadores de todos los controles nuevos, incluidos ImageButton y CollectionView , usan el enfoque de representador rápido.Renderers for all new controls, including ImageButton and CollectionView, use the fast renderer approach.

Las mejoras de rendimiento cuando se usan representadores rápidos variarán para cada aplicación, en función de la complejidad del diseño.Performance improvements when using fast renderers will vary for each application, depending upon the complexity of the layout. Por ejemplo, las mejoras de rendimiento de x2 son posibles al desplazarse a través de un ListView que contiene miles de filas de datos, donde las celdas de cada fila se componen de controles que usan representadores rápidos, lo que da como resultado un desplazamiento más suave visible.For example, performance improvements of x2 are possible when scrolling through a ListView containing thousands of rows of data, where the cells in each row are made of controls that use fast renderers, which results in visibly smoother scrolling.

Nota

Se pueden crear representadores personalizados para los representadores rápidos mediante el mismo enfoque que se usa para los representadores heredados.Custom renderers can be created for fast renderers using the same approach as used for the legacy renderers. Para obtener más información, consulte Custom Renderers (Representadores personalizados).For more information, see Custom Renderers.

Compatibilidad con versiones anterioresBackwards compatibility

Los representadores rápidos se pueden invalidar con los siguientes enfoques:Fast renderers can be overridden with the following approaches:

  1. Habilitar los representadores heredados agregando la siguiente línea de código a la MainActivity clase antes de llamar a Forms.Init :Enabling the legacy renderers by adding the following line of code to your MainActivity class before calling Forms.Init:

    Forms.SetFlags("UseLegacyRenderers");
    
  2. Usar representadores personalizados que tienen como destino los representadores heredados.Using custom renderers that target the legacy renderers. Los representadores personalizados existentes seguirán funcionando con los representadores heredados.Any existing custom renderers will continue to function with the legacy renderers.

  3. Especificar un distinto View.Visual , como Material , que usa representadores diferentes.Specifying a different View.Visual, such as Material, that uses different renderers. Para obtener más información sobre el material visual, vea el Xamarin.Forms material visual.For more information about Material Visual, see Xamarin.Forms Material Visual.