gpt4 book ai didi

android - 双向数据绑定(bind)如何导致无限循环?

转载 作者:行者123 更新时间:2023-12-04 15:46:29 26 4
gpt4 key购买 nike

我正在通过阅读官方 docs 来学习数据绑定(bind).一切都有意义,期待双向绑定(bind)中可能的无限循环。根据 two-way binding 上的官方文档:

Be careful not to introduce infinite loops when using two-way data binding. When the user changes an attribute, the method annotated using @InverseBindingAdapter is called, and the value is assigned to the backing property. This, in turn, would call the method annotated using @BindingAdapter, which would trigger another call to the method annotated using @InverseBindingAdapter, and so on.

我理解语句的第一部分,如果属性发生更改并将新值分配给后备属性,将调用使用 @InverseBindingAdapter 注释的方法。

但是我不明白的是为什么在这个过程中调用@BindingAdapter方法时再次调用@InverseBindingAdapter方法以及如何它会导致无限循环吗?

最佳答案

我想迟到总比不到好 :) 无限循环发生的原因是 InverseBindingAdapter 基本上是变化的观察者。因此,当用户更改某些内容时,InverseBindingAdapter 中的 onChanged 观察器将被触发并执行一些逻辑。然后 BindingAdapter 也会对字段中的更改使用react并再次更新值,因此 InverseBindingAdapter 中的更改监听器会再次被触发,而不是我们处于循环中。

所以这里有一些视觉效果

  1. 用户 -> 输入他们的名字“Joe”
  2. InverseBindingAdapter -> 由更新触发
  3. ObservableField/LiveData -> 也更新了 2 路绑定(bind),现在包含值“Joe”
  4. 随着 ObservableField/LiveData 的更新,触发 BindingAdapter 以将新值设置到字段中。
  5. InverseBindingAdapter -> 检测到字段中的另一个变化并被触发。
  6. 重复第 3、4、5 步....

查看我的 article on Medium在高级数据绑定(bind)上,它实际上用 ViewPager 和 2 方式绑定(bind)示例描述了这种情况。 (没错,不要脸的自插免责声明)

关于android - 双向数据绑定(bind)如何导致无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com