网站建设需求分析调研表,wordpress 适合程序员,石家庄网站建设公司,上海建设银行官网相关类型的文章很多#xff0c;这里只做个人总结和其余的方法推荐
1.什么是数据倒灌#xff1f;
所谓的“数据倒灌”#xff1a;其实是类似粘性广播那样#xff0c;当新的观察者开始注册观察时#xff0c;会把上次发的最后一次的历史数据传递给当前注册的观察者。
一方…相关类型的文章很多这里只做个人总结和其余的方法推荐
1.什么是数据倒灌
所谓的“数据倒灌”其实是类似粘性广播那样当新的观察者开始注册观察时会把上次发的最后一次的历史数据传递给当前注册的观察者。
一方面用于通信的 LiveData 是被托管在 Activity / Application 级作用域 SharedViewModel 中于是 LiveData 生存期长于任何一个 Fragment假设通信双方是 Fragment当二级 Fragment 出栈时LiveData 实例仍存在。
另一方面LiveData 本身被设计为粘性事件也即一旦 LiveData 持有数据那么在观察者订阅该 LiveData 时会被推送最后一次数据。
2.官方Demo的解决方法
public class SingleLiveDataT extends MutableLiveDataT {private final AtomicBoolean mPending new AtomicBoolean(false);public SingleLiveData() {}public void observe(NonNull LifecycleOwner owner, NonNull Observer? super T observer) {super.observe(owner, (t) - {if (this.mPending.compareAndSet(true, false)) {observer.onChanged(t);}});}MainThreadpublic void setValue(Nullable T t) {this.mPending.set(true);super.setValue(t);}MainThreadpublic void call() {this.setValue((Object)null);}
}
缺点未解决多观察者消费的问题
3.其余优秀的文章和github
简单粗暴解决LiveData『数据倒灌』的问题_livedata数据倒灌怎么解决-CSDN博客
https://github.com/KunMinX/UnPeek-LiveData/tree/master
重学安卓LiveData 数据倒灌 “背景缘由全貌” 独家解析 小专栏