3

目前,我正在使用data binding两种情况:

  • views在片段中访问
  • view model在布局中订阅数据。

当我与 进行比较时view binding,我发现这两种方法都很好(view binding更好地访问viewsdata binding绑定数据),那么MVVM 应该首选哪种模式?

我应该只移动view binding并处理ViewModel-layout片段中的连接吗?

4

3 回答 3

4

对于您的问题Should View Binding replace Data Binding,答案是取决于用例。

ViewBinding 仅生成布局文件的 ViewBinding,因此您可以在不使用findViewById.

DataBinding 为您提供相同但具有额外功能,例如数据绑定表达式(将通用 Java 逻辑放入 XML)、整个 xml 的通用数据变量、注释等。

那么什么时候使用这些呢?
如果您只需要访问 Java 代码中的视图而不需要任何复杂/重复的视图逻辑(例如:根据一个数据变量更改多个视图的可见性),那么您应该使用ViewBinding它,因为它更轻、更快。

但如果您需要的不仅仅是访问绑定表达式、绑定适配器等视图(这是大型项目的一般要求)。您应该使用DataBinding它,因为它提供了更多功能。

有关更多信息,请查看
https://developer.android.com/topic/libraries/view-binding#data-binding - AndroidDeveloper 的比较
https://proandroiddev.com/new-in-android-viewbindings- the-difference-from-databinding-library-bef5945baf5e - ProAndroidDev 的比较

于 2020-03-03T06:15:18.687 回答
2

视图绑定不会取代数据绑定。

视图绑定旨在处理更简单的用例,您可以在需要高级功能的布局中使用数据绑定。

视图绑定的好处:

  • 更快的编译:视图绑定不需要注释处理,因此编译时间更快。
  • 易于使用:视图绑定不需要特别标记的 XML 布局文件,因此在您的应用程序中采用它会更快。

与数据绑定相比的限制:

  • 视图绑定不支持布局变量或布局表达式,因此不能用于直接从 XML 布局文件声明动态 UI 内容。
  • 视图绑定不支持双向数据绑定。

由于这些考虑,在某些情况下最好在项目中同时使用视图绑定和数据绑定。

请查看android官方文档将视图绑定与数据绑定进行比较:与数据绑定的比较

于 2020-12-23T05:19:51.660 回答
1

这一切最终取决于您的用例,

如果您想通过 xml 设置数据以提高构建速度的成本,请使用数据绑定,如果您只想省略视图绑定,请使用视图绑定findViewById,与数据绑定相比,视图绑定便宜得多。数据绑定就像 viewbinding 的超集。如果需要,您也可以同时使用两者。

我建议您观看 Yigit https://youtu.be/QWHfLvlmBbs?t=42的回答。

于 2020-03-03T06:13:45.023 回答