Android LiveData 数据倒灌

news/2024/11/17 1:36:18/

相关类型的文章很多,这里只做个人总结和其余的方法推荐

1.什么是数据倒灌?

所谓的“数据倒灌”:其实是类似粘性广播那样,当新的观察者开始注册观察时,会把上次发的最后一次的历史数据传递给当前注册的观察者

一方面,用于通信的 LiveData 是被托管在 Activity / Application 级作用域 SharedViewModel 中,于是 LiveData 生存期长于任何一个 Fragment(假设通信双方是 Fragment):当二级 Fragment 出栈时,LiveData 实例仍存在

另一方面,LiveData 本身被设计为粘性事件,也即,一旦 LiveData 持有数据,那么在观察者订阅该 LiveData 时,会被推送最后一次数据。

2.官方Demo的解决方法

java">public class SingleLiveData<T> extends MutableLiveData<T> {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 数据倒灌 “背景缘由全貌” 独家解析 - 小专栏


http://www.ppmy.cn/news/1531333.html

相关文章

汽车信息安全 -- 存到HSM中的密钥还需包裹吗?

目录 1.车规芯片的ROM_KEY 2.密钥加密与包裹 3.瑞萨RZ\T2M的密钥导入 4.小结 在车控类ECU中&#xff0c;我们通常把主控芯片MCU中的HSM以及HSM固件统一看做整个系统安全架构的信任根。 所以大家默认在HSM内部存储的数据等都是可信的&#xff0c;例如CycurHSM方案中使用HSM…

如何在银河麒麟操作系统中关闭IPv6

如何在银河麒麟操作系统中关闭IPv6 1、临时关闭IPv62、永久关闭IPv6方法一&#xff1a;通过sysctl.conf方法二&#xff1a;通过GRUB配置 1、3、 验证IPv6是否已关闭 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在当前的网络环境中&#…

计算机网络第四章——网络层

网络层的主要任务就是把分组从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务。网络层的传输单位是数据报。 网络层的主要功能&#xff1a; 功能一&#xff1a;路由选择与分组转换 功能二&#xff1a;异构网络互联 功能三&#xff1a;拥塞控制 一.SDN 路由…

时序必读论文13|ICLR24 “又好又快”的线性SOTA时序模型FITS

论文标题&#xff1a;FITS: Modeling Time Series with 10k Parameters 开源代码&#xff1a;https://anonymous.4open.science/r/FITS/README.md 前言 FITS&#xff08;Frequency Interpolation Time Series Analysis Baseline&#xff09;这篇文章发表于ICLR2024&#xff…

机器学习常用的评价指标原理和代码

最近面试的时候&#xff0c;很多面试官问道了我项目中的一些评价指标的算法和原理&#xff0c;我觉得这确实也是一个很重要的内容&#xff0c;所以趁这个机会综合起来一块复习一下&#xff0c;在刷力扣的时候也不能忘记项目最常用的内容嘛。当然还包括一些深度学习的例如我项目…

WPF 中的线程池

WPF 中的线程池 在 WPF 中&#xff0c;虽然应用程序主要运行在 UI 线程上&#xff0c;但我们可以使用 线程池 来执行后台任务而不会阻塞 UI 线程。WPF 中常用的线程池是 .NET 线程池&#xff0c;可以通过 ThreadPool 类或 Task 来管理后台任务。以下是 WPF 中如何使用线程池及…

虚幻蓝图Ai随机点移动

主要函数: AI MoveTo 想要AI移动必须要有 导航网格体边界体积 (Nav Mesh Bounds Volume) , 放到地上放大 , 然后按P键 , 可以查看范围 然后创建一个character类 这样连上 AI就会随机运动了 为了AI移动更自然 , 取消使用控制器旋转Yaw 取消角色移动组件 的 使用控制器所需的…

SQL进阶技巧:如何计算块熵?

目录 0 信息量定义 信息熵 1 块熵定义 2 问题描述 ​3 数据准备 4 问题分析 5 小结 想要进一步了解SQL这门艺术语言的&#xff0c;可以订阅我的专栏数字化建设通关指南&#xff0c;将在该专栏进行详细解析。专栏 原价99&#xff0c;现在活动价39.9&#xff0c;按照阶梯式…