Xamarin.Forms 高速レンダラー
従来、Android の元のコントロール レンダラーのほとんどは、次の 2 つのビューで構成されています。
Button
やTextView
などのネイティブ コントロール。- レイアウト作業、ジェスチャ処理、およびその他のタスクの一部を処理するコンテナー
ViewGroup
。
ただし、この方法では、論理コントロールごとに 2 つのビューが作成されるため、より多くのメモリを必要とするより複雑なビジュアル ツリーが作成され、画面上でレンダリングする処理が増えるという点でパフォーマンスに影響します。
高速レンダラーにより、Xamarin.Forms コントロールのインフレとレンダリングのコストが 1 つのビューに削減されます。 したがって、2 つのビューを作成してビュー ツリーに追加する代わりに、1 つのビューのみが作成されます。 これにより、作成するオブジェクトが少なくなり、ビュー ツリーが複雑になり、メモリ使用量が少なくなります (ガベージ コレクションの一時停止も少なくなります)。
高速レンダラーは、Android 上の Xamarin.Forms の次のコントロールで使用できます。
機能的には、これらの高速レンダラーは従来のレンダラーと違いはありません。 Xamarin.Forms 4.0 以降では、FormsAppCompatActivity
を対象とするすべてのアプリケーションで、既定で高速レンダラーが使用されます。 ImageButton
や CollectionView
を含むすべての新しいコントロールのレンダラーでは、高速レンダラー アプローチが使用されます。
高速レンダラーを使用する場合のパフォーマンスの向上は、レイアウトの複雑さに応じて、アプリケーションごとに異なります。 たとえば、数千行のデータを含む ListView
をスクロールすると、パフォーマンスが 2 倍向上します。各行のセルは、高速レンダラーを使用するコントロールで構成されるため、スクロールが目に見えてなめらかになります。
Note
カスタム レンダラーは、従来のレンダラーで使用されるのと同じ方法を使用して、高速レンダラー用に作成できます。 詳細については、「Custom Renderers」 (カスタム レンダラー) を参照してください。
下位互換性
高速レンダラーは、次の方法でオーバーライドできます。
Forms.Init
を呼び出す前に、MainActivity
クラスに次のコード行を追加して、レガシ レンダラーを有効にします。Forms.SetFlags("UseLegacyRenderers");
レガシ レンダラーを対象とするカスタム レンダラーを使用します。 既存のカスタム レンダラーは、従来のレンダラーで引き続き機能します。
異なるレンダラーを使用する別の
View.Visual
(Material
など) を指定します。 マテリアル ビジュアルの詳細については、「Xamarin.Forms の素材のビジュアル」を参照してください。