Когда использовать executePendingBindings (), а когда его не требуется? - PullRequest
0 голосов
/ 03 ноября 2019

Я ищу практический пример для обоих случаев, что и когда использовать? Я видел похожие потоки, но они сообщают это «, только когда связывание должно быть выполнено немедленно », но нет примера реального времени для любого случая, когда нужно принудительно выполнить связывание. Поэтому, пожалуйста, если кто-нибудь может объяснить на каком-либо примере, что, когда его использовать, а когда нет, это требуется!

1 Ответ

1 голос
/ 03 ноября 2019

Случай, когда вы должны использовать executePendingBindings(), имеет место (но может быть и больше):

Каждый раз, когда обновление привязки может привести к изменению размера представления и откладыванию вычисления в следующемкадр может заставить измерение считать неправильные значения.

В случае RecyclerView это происходит, если:

  1. У вас есть несколько viewType s с различными размерами(другой XML)
  2. Ваша высота строки изменяется в зависимости от содержимого представления.

RecyclerView будет измерять размер строки после завершения onBindViewHolder. Если на основе данных, которые вы задали в этом методе, высота строки изменяется, измерение не может учитывать дополнительное или уменьшенное пространство, занимаемое вашим новым контентом, если вы не вызываете executePendingBindings().

Forcingпривязка к обновлению данных синхронно, а не в следующем кадре, защищает вас от неправильного измерения размера строки (и, возможно, пропускаемого содержимого)

...