android - 使用初始超时观察 livedata
问题描述
我有一个 livedata,每次数据库中有更新时都会发出。当特定屏幕打开时,此 livedata 会立即发出数据库中的任何值。然后,进行网络调用以更新数据库。更新数据库后,livedata 再次发出。这导致非常快速的连续两次排放。对数据库的后续更新工作正常,因为每当更新数据库时只有一次发射。只有第一次,很快就连续更新了 2 次。我想避免这种情况。
避免这种情况的想法是这样的。当 livedata 发出时,等待 Xs。如果这些 X 中有另一个发射,则丢弃旧发射中的数据并使用新发射。再次等待Xs。如果这些 X 中没有排放,请使用最新数据。
这看起来与节流非常相似,但只有一次。我想知道是否有一种简单的方法可以使用 LiveData 或 MediatorLiveData。
解决方案
您可以在第一个事件之后延迟发布Runnable
您想要的超时。LiveData
每次LiveData
更新都删除发布Runnable
并再次发布。
推荐阅读
- .net-core - .net core 3 jwt token 配置部署linux
- javascript - 在 VUE 模板中动态传递所有对象的键和值作为 HTML 属性
- python - Pylint 说:W0233:来自非直接基类“嵌套”的 __init__ 方法被调用(非父初始化调用)
- powershell - ls 进入解压目录
- swift - 如何实现一个自定义属性包装器,它将发布 SwiftUI 的更改以重新呈现它的视图
- c++ - 为什么我们在链表中设置pointer=nullpointer和pointer->next=nullpointer时会有不同的效果-C++
- c# - System.Net.Http from visual studio's assemblies vs nuget package
- javascript - Can I run javascript in VS Code markdown preview?
- javascript - 情节在反应中未定义
- android - 重用在 Fragment.onCreateView() 上创建的布局以避免多次显示时出现膨胀