web-dev-qa-db-ja.com

Android:DataBindingとViewBindingの違い

Jetpackのリリース以降、 DataBinding を使用しています。 Androidドキュメントは ViewBindingAndroid Studio 3.6 Canary 11+に追加されたことを示しています。

私は実際のドキュメントですが、その外観はDataBindingと似ています

誰もがこの2つの概念をどのように違うのか説明できますか?

10
Pratik Butani

DATABINDING = DATAを(コードから)ビューにバインド+ viewbinding(ビューをコードにバインド)

VIEWBINDING =バインドビューをコーディングのみ

公式ドキュメント@ https://developer.Android.com/topic/libraries/view-binding によると、3つの重要な違いがあります

  1. ビューバインディングを使用すると、レイアウトにレイアウトタグが不要になります。

  2. ビューバインディングを使用してレイアウトをxmlのデータにバインドすることはできません(バインディング式、BindingAdapters、viewbindingによる双方向バインディングは不可)

  3. ビューバインドの主な利点は、速度と効率です。アノテーションプロセッサがデータバインディングのビルド時間に影響を与えるため、データバインディングに関連するオーバーヘッドとパフォーマンスの問題を回避できるため、ビルド時間が短くなります。

要するに、ビューバインディングでデータバインディングで実行できないことはありません(ただし、ビルド時間は長くなりますが)。

9
Segun Wahaab

データバインディングとの比較

ビューバインディングとデータバインディングはどちらも、ビューを直接参照するために使用できるバインディングクラスを生成します。ただし、ビューバインディングはより単純なユースケースを処理することを目的としており、データバインディングに比べて次の利点があります。

**Faster compilation:** View binding requires no annotation processing, so compile times are faster.
**Ease of use:** View binding does not require specially-tagged XML layout files, so it is faster to adopt in your apps. Once you enable view binding in a module, it applies to all of that module's layouts automatically.

逆に、ビューバインディングには、データバインディングと比較して次の制限があります。

View binding doesn't support layout variables or layout expressions, so it can't be used to declare dynamic UI content straight from XML layout files.
View binding doesn't support two-way data binding.

これらの考慮事項のため、プロジェクトではビューバインディングとデータバインディングの両方を使用するのが最適な場合があります。高度な機能を必要とするレイアウトではデータバインディングを使用でき、不要なレイアウトではビューバインディングを使用できます。

詳細については https://developer.Android.com/topic/libraries/view-binding#Java をご覧ください。

3
Alok Singh