正如我们在这里ViewBinding
所读到的,和之间的差异非常小Databinding
。
数据绑定库仅处理使用
<layout>
标签创建的数据绑定布局。视图绑定不支持布局变量或布局表达式,因此它不能用于将布局与 XML 中的数据绑定。
开发人员还应该注意哪些其他差异?为什么要创造差异如此之小的新事物?
有人请解释
正如我们在这里ViewBinding
所读到的,和之间的差异非常小Databinding
。
数据绑定库仅处理使用
<layout>
标签创建的数据绑定布局。视图绑定不支持布局变量或布局表达式,因此它不能用于将布局与 XML 中的数据绑定。
开发人员还应该注意哪些其他差异?为什么要创造差异如此之小的新事物?
有人请解释
为什么要创造差异如此之小的新事物?
视图绑定的构建时间比数据绑定要短得多,因为涉及的工作要少得多。对于小型项目,这可能无关紧要。对于大型项目,对构建时间的影响可能很大。
视图绑定的优点是速度和效率。它具有更短的构建时间,因为它避免了与数据绑定相关的开销和性能问题,因为注释处理器会影响数据绑定的构建时间。
以下是您可能更喜欢视图绑定而不是数据绑定的原因之一:
数据绑定库仅处理使用
<layout>
标签创建的数据绑定布局。数据绑定布局文件略有不同,以布局的根标记开头,后跟数据元素和视图根元素
这在打算使用合并时会导致问题:
数据绑定不支持包含作为合并元素的直接子元素。例如,不支持以下布局:
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:bind="http://schemas.android.com/apk/res-auto"> <data> <variable name="user" type="com.example.User"/> </data> <merge><!-- Doesn't work --> <include layout="@layout/name" bind:user="@{user}"/> <include layout="@layout/contact" bind:user="@{user}"/> </merge> </layout>