Xamarin.Forms 高速レンダラー

従来、Android の元のコントロール レンダラーのほとんどは、次の 2 つのビューで構成されています。

  • ButtonTextView などのネイティブ コントロール。
  • レイアウト作業、ジェスチャ処理、およびその他のタスクの一部を処理するコンテナー ViewGroup

ただし、この方法では、論理コントロールごとに 2 つのビューが作成されるため、より多くのメモリを必要とするより複雑なビジュアル ツリーが作成され、画面上でレンダリングする処理が増えるという点でパフォーマンスに影響します。

高速レンダラーにより、Xamarin.Forms コントロールのインフレとレンダリングのコストが 1 つのビューに削減されます。 したがって、2 つのビューを作成してビュー ツリーに追加する代わりに、1 つのビューのみが作成されます。 これにより、作成するオブジェクトが少なくなり、ビュー ツリーが複雑になり、メモリ使用量が少なくなります (ガベージ コレクションの一時停止も少なくなります)。

高速レンダラーは、Android 上の Xamarin.Forms の次のコントロールで使用できます。

機能的には、これらの高速レンダラーは従来のレンダラーと違いはありません。 Xamarin.Forms 4.0 以降では、FormsAppCompatActivity を対象とするすべてのアプリケーションで、既定で高速レンダラーが使用されます。 ImageButtonCollectionView を含むすべての新しいコントロールのレンダラーでは、高速レンダラー アプローチが使用されます。

高速レンダラーを使用する場合のパフォーマンスの向上は、レイアウトの複雑さに応じて、アプリケーションごとに異なります。 たとえば、数千行のデータを含む ListView をスクロールすると、パフォーマンスが 2 倍向上します。各行のセルは、高速レンダラーを使用するコントロールで構成されるため、スクロールが目に見えてなめらかになります。

Note

カスタム レンダラーは、従来のレンダラーで使用されるのと同じ方法を使用して、高速レンダラー用に作成できます。 詳細については、「Custom Renderers」 (カスタム レンダラー) を参照してください。

下位互換性

高速レンダラーは、次の方法でオーバーライドできます。

  1. Forms.Init を呼び出す前に、MainActivity クラスに次のコード行を追加して、レガシ レンダラーを有効にします。

    Forms.SetFlags("UseLegacyRenderers");
    
  2. レガシ レンダラーを対象とするカスタム レンダラーを使用します。 既存のカスタム レンダラーは、従来のレンダラーで引き続き機能します。

  3. 異なるレンダラーを使用する別の View.Visual (Material など) を指定します。 マテリアル ビジュアルの詳細については、「Xamarin.Forms の素材のビジュアル」を参照してください。