【问题标题】:When to use executePendingBindings() and when its not required?何时使用 executePendingBindings() 何时不需要?
【发布时间】:2020-02-28 21:54:24
【问题描述】:

我正在为这两种情况寻找一个实际的例子,什么时候使用?我见过类似的线程,但它们只告诉“何时必须立即执行绑定”,但对于必须强制执行绑定的任何情况,都没有实时示例。所以,如果有人可以用任何例子解释什么时候使用它,什么时候不需要它!

【问题讨论】:

标签: android mvvm android-databinding android-mvvm


【解决方案1】:

您应该使用executePendingBindings() 的情况是(但可能还有更多):

每次绑定更新都可能导致 View 更改其大小并在下一帧中推迟计算可能会导致测量读取错误的值。

如果是RecyclerView,会发生这种情况:

  1. 您有多个不同大小的viewTypes(不同的XML)
  2. 您的行高会根据视图内容而变化。

RecyclerView 将在onBindViewHolder 完成后测量行大小。如果根据您在此方法中设置的数据,行高发生变化,如果您不调用executePendingBindings(),则测量无法考虑新内容占用的额外或减少空间。

强制绑定同步更新数据,而不是在下一帧中,这样可以避免错误的行大小测量(以及可能丢失的内容)

【讨论】:

  • 是的,这正是我在答案中寻找的。但是,这是否意味着如果列表中有 500 个元素,所有元素都将受到此 UI 更改的影响?
  • onBindViewHolder 应该只为可见元素(或接近可见)调用。只有那些元素会受到 executePendingBindings 的影响
猜你喜欢
  • 2011-06-13
  • 2015-05-14
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多