【问题标题】:Android Databinding DatabindingUtil vs binding classAndroid 数据绑定 DatabindingUtil 与绑定类
【发布时间】:2019-01-24 09:13:52
【问题描述】:

我想知道以下之间有什么区别:

binding = DataBindingUtil.inflate(inflater, R.layout.drawer_item_primary, parent, false);

binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);

有任何性能差异吗?
每个的首选用例是什么?

任何其他信息将不胜感激!

谢谢!

【问题讨论】:

    标签: android performance android-databinding android-jetpack layout-inflater


    【解决方案1】:

    按照Android Documentation中的建议使用Binding class's inflate

    DataBindingUtildocumentation中可以看到。

    膨胀

    T inflate (LayoutInflater inflater, 
                    int layoutId, 
                    ViewGroup parent, 
                    boolean attachToParent)
    

    仅当 layoutId 事先未知时才使用此版本。否则,使用生成的 Binding 的 inflate 方法来确保类型安全 通货膨胀。

    一种选择是通过DataBindingUtil 膨胀但只有当您没有生成绑定类时

    您已生成binding class,请使用该类而不是使用DataBindingUtil

    在 Java 中

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        HomeFragmentBinding binding = HomeFragmentBinding.inflate(inflater, container, false);
        //set binding variables here
        return binding.getRoot();
    }
    

    在 Kotlin 中

    lateinit var binding: HomeFragmentBinding 
    override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        binding = HomeFragmentBinding.inflate(inflater, container, false)
        return binding.root
    }
    

    如果你的布局绑定类没有生成@See this answer

    【讨论】:

      【解决方案2】:

      实际上,这两个东西都是一样的,不会影响性能。 我注意到的唯一一个细微差别是,如果您确定要充气的布局,那么您可以使用

      binding = DrawerItemPrimaryBinding.inflate(inflater, parent, false);

      但是如果你想要动态绑定类那么你可以使用

      int layoutId = R.layout.drawer_item_primary;
      DataBindingUtil.inflate(inflater, layoutId, parent, false);
      

      所以DrawerItemPrimaryBinding.inflate(inflater, parent, false); 将始终返回我们的DrawerItemPrimaryBinding 类。 如果我们必须使用DataBindingUtil.inflate(inflater, layoutId, parent, false);,那么我们可以根据要求进行转换。

      谢谢。

      【讨论】:

        猜你喜欢
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 2016-04-15
        • 1970-01-01
        • 2016-04-20
        • 2015-08-13
        • 2011-08-25
        • 1970-01-01
        相关资源
        最近更新 更多