Android 为什么使用 ExecutePendingBindings

Nic*_*ick 0 data-binding android android-databinding

我最近一直在使用数据绑定,并且遇到了 executePendingBindings 方法。文档几乎没有显示,我可以理解它是如何工作的或何时使用它。这是该方法用法的示例。

请举例说明使用和不使用它的区别。谢谢

    @Override
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {

            Customer customer= List.get(position).second;

            ((CustomerViewHolder)holder).binding.setCustomer (customer)
            ((CustomerViewHolder)holder).binding.executePendingBindings();

}
Run Code Online (Sandbox Code Playgroud)

Gas*_*lén 9

更详细的解释可以参考这个例子。

当不使用executePendingBindings()列表时,您绑定它时会闪烁,例如,当您打开一个新列表时,您会注意到这种闪烁/抖动效果,这是因为列表已填充,然后在下一帧中它被绑定。

如果您不希望这种情况发生并立即执行,则绑定此方法将防止闪烁并立即绑定您的数据。

这是一个没有的例子 executePendingBindings()

在此输入图像描述

如果您看到,由于视图被初始化,然后数据绑定,然后在下一帧中发生视图绑定,因此存在闪烁效果。

这里是 executePendingBindings()

在此输入图像描述

如果你看到这里,没有闪烁的效果,你可以看到列表已经正常绑定并且可以正常工作了。

你只能executePendingBindings()在UI线程上使用,这意味着在onBindViewHolder调用的时候,你将需要在绑定上使用它,这样做将保证你是在UI上调用它。

override fun onBindViewHolder(binding: MyBindingClass, position: Int, viewType: Int) {
        //Your binding code
        binding.executePendingBindings()
    }
Run Code Online (Sandbox Code Playgroud)

始终在 onBindViewHolder 的末尾调用它


Raj*_*eck 5

executePendingBindings() 功能是立即绑定。

当变量或可观察对象发生变化时,绑定被安排在下一帧之前发生变化。但是,有时必须立即执行绑定。要强制执行,请使用 executePendingBindings() 方法。