【问题标题】:Why use ViewBinding over DataBinding?为什么使用 ViewBinding 而不是 DataBinding?
【发布时间】:2020-02-29 19:19:36
【问题描述】:

正如我们所看到的hereViewBindingDatabinding 之间的差异非常小。

  • 数据绑定库仅处理使用<layout> 标签创建的数据绑定布局。

  • 视图绑定不支持布局变量或布局表达式,因此不能用于将布局与 XML 中的数据绑定。

开发人员还应注意哪些其他差异?为什么要创造差异如此之小的新事物?

请大家解释一下

【问题讨论】:

    标签: android android-databinding android-viewbinding


    【解决方案1】:

    为什么要创造差异如此之小的新事物?

    视图绑定的构建时间远低于数据绑定,因为所涉及的工作量要少得多。对于小型项目,这可能无关紧要。对于大型项目,对构建时间的影响可能很大。

    【讨论】:

    • 你能解释一下少很多工作是什么意思吗?
    【解决方案2】:

    这是您可能更喜欢视图绑定而不是数据绑定的原因之一:

    数据绑定库仅处理使用<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>
    

    【讨论】:

    • 它现在支持包含
    • @user158 它不支持 include inside merge
    • 有可能请阅读here 我认为目前includemerge 标签不适用于ViewBinding,因为报告了错误herehere
    【解决方案3】:

    视图绑定的优点是速度和效率。它具有更短的构建时间,因为它避免了与数据绑定相关的开销和性能问题,因为注释处理器会影响数据绑定的构建时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多